マイクロ管理プラットフォームナコスサービスの仮想IPロードバランシングクラスタモードを設定しました

A、ナコスさんのプロフィール

ナコスは、マイクロ管理サービスのためのプラットフォームで、その中核機能は、サービス登録と発見、サービスの構成管理にあります。

  • ヘルスチェックユーレカ、領事、およびサポートサービス:ナコスでは、次のような発見コンポーネントに登録され、伝統的な春のクラウドアプリケーションサービスを、置き換えることができ、サービス・ディスカバリ・コンポーネントとして登録しました。
  • ナコスでは、春のクラウドコンフィグを置き換えることができ、サービスセンターとして設定しました。

、ダボ、kubernetes等がドッキングウィンドウ:マイクロ・サービス管理プラットフォームとして当然ナコスのうち、春クラウドを除き、またなど、他の多くのマイクロサービスインフラストラクチャをサポートしています。ダイナミックDNSサービスメタデータ管理:がサービス登録および発見および構成管理機能、のコアに加えて、などのサービス管理機能を数多く提供しています。

二、展開のナコスシングルポイント

ナコスは、単一の展開モデルをサポートし、ビルドプロセスは、スタンドアロンモードのインストールプロセスなど、実際のナコスの無いような事にダウンロードして起動することで、非常に簡単です。しかし、これは、テストまたは使用することを学ぶためにこれだけ適した高可用性をサポートしていませんでした。
まず、インストールパッケージをダウンロードするにはgithubのアドレスのナコスのリリースに行きます。もちろん、あなたもナコスは、Javaを使用して開発されたコンパイルパッケージを使用してMavenをされて、自分の後にソースコードコンパイラパッケージをダウンロードすることができます。ここでは、独自のパッケージをせず、リリースのインストールパッケージを使用します。ダウンロードアドレスは次のとおりです。https://github.com/alibaba/nacos/releasesあなたは、ダウンロードし解凍し、Linuxシステムに、次のコマンドを使用することができます。

#下载nacos
wget https://github.com/alibaba/nacos/releases/download/1.1.4/nacos-server-1.1.4.tar.gz;
# 解压nacos
tar -xvf nacos-server-1.1.4.tar.gz

ナコス/ binディレクトリに、起動コマンドはナコスをオフにするためナコス、shutdownコマンドを開始します。

ファイル

  • あなたは、Linux / UNIXシステムの場合は、使用してsh startup.sh -m standaloneスクリプトを開始します。
  • Windowsシステムの場合は、ダブルクリックは、ナコスを開始STARTUP.CMD。

訪問ナコスの完了は、ブラウザを起動した後、ナコスデフォルトのサービス・ポートは、8848ですhttp://ip:8848/nacos/次のインターフェイスを参照してください、あなたはデフォルトのユーザー名とパスワードでログインする必要が着陸した後、次のインターフェイスを参照してください、ナコスのとおりです。

ファイル

あなたがインターフェイスにアクセスすることができない場合は、ホストオペレーティングシステムに展開ファイアウォールの設定を確認してください。以下は、あなた自身を解決するためにCentOS7オープンファイアウォールのポート8848、および他のシステムのためのコマンド体系です。

firewall-cmd --zone=public --add-port=8848/tcp --permanent    
firewall-cmd --reload

第三には、NICのホスト名を表示します

使用するip addrカードのLinuxホストを表示するコマンドを。

ファイル

  • 最初のループはLOネットワークIP、IP、127.0.0.1で、これが標準です
  • ブリッジ+ HostOnlyモード:二enp0s3ネットワークデバイスは、IPは私のサーバーのネットワークは、デュアルNICを使用しているため、これは、10.0.2.15です。通常のサーバーではありません。
  • 192.168.161.4:第三enp0s8は、このサーバーは、次のような、サービスにネットワークIPを提供するために、実際の使用です。
  • 第四のネットワークデバイスは、私は、この仮想マシンにインストールされているドッキングウィンドウを持っていたので、そのネットワーク機器のdocker0があります。

より多くのネットワーク機器なので、問題があった私は、後続のインストールで表示されます。ここで最初の秘密。

第四に、クラスタ構成ナコス

私たちは、3台のサーバ(仮想マシン)、192.168.161.3,192.168.161.4,192.168.161.5を用意しました。彼らは、3台のサーバ、エキスナコス、オープンポート8848上でダウンロードされました。単一点スタンドアロンの展開を参照して動作モード。Ipは、その後のconf / cluster.confの中に構成された3台のサーバを追加しました

#ip:port
192.168.161.3:8848
192.168.161.4:8848
192.168.161.5:8848
  • MySQLデータベースを初期化し、SQLソースファイルナコス/ナコス-mysql.sqlファイル以下のconfディレクトリに解凍してあります。SQL文のソースファイルそして、MySQLに配置されたナコス/ confに/ application.propertiesに増加
spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://192.168.161.3:3306/testdb?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=test
db.password=
  • 現在知られているspring.datasource.platform命令支援データ永続性データベースの種類は、のみMySQLをサポートしています
  • 番号db.numデータベース、我々のテスト環境のみmysqlデータベースは、それが1であります
  • db.url.0表示第一个mysql数据库的jdbc url连接。如果还有第二个、第三个,请增加db.url.n中的n。

问题: 解决网卡获取的不是我们希望绑定的网卡的问题:当我们配置完成之后,使用startup.sh命令启动。发现集群节点列表中并没有任何记录。而且后台服务日志报错,内容如下:

ファイル

分析: 通过日志我们看到nacos程序自动获取的是10.0.2.15这个ip,而我们配置的是192.168.161.x的ip。二者不一致,所以报错。我们看一下获取主机ip的程序源码,如下:

private static String getHostAddress() {
        String address = System.getProperty("nacos.server.ip");
        if (StringUtils.isNotEmpty(address)) {
            return address;
        } else {
            address = "127.0.0.1";
        }
        ...
}

解决方案: 看完源码之后,ip是通过System.getProperty获取的,所以我们完全可以通过JVM传参指定ip。在startup.sh的启动脚本中增加nacos.server.ip参数。

#=================================================================================
# JVM Configuration
#================================================================================

# 单机模式对应的启动参数
if [[ "${MODE}" == "standalone" ]]; then
    JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
    JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
else
# 集群模式对应的启动参数
    JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
    JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"
    JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
# 新增以下参数设置本机ip地址
    JAVA_OPT="${JAVA_OPT} -Dnacos.server.ip=你的服务器的ip"
fi

当以上工作都完成之后,我们通过浏览器分别访问nacos服务,看到如下界面。集群管理的节点列表里面已经有三各节点,ip分别是192.168.161.3:8848、192.168.161.4:8848、192.168.161.5:8848。

ファイル

五、nacos集群架构

在完成nacos集群的配置之后,我们可以通过三个入口分别访问集群内的nacos服务,那下面的问题就是如何将三个入口转成一个入口。目前许多个人开发者写的博客或教程中的方法就是在三个nacos服务的前端加一个负载均衡器,如:nginx、haproxy。然后号称是生产级别的搭建方法,但这种方法是绝对不能用于生产的,因为你的nginx和haproxy是单点,一旦nginx挂了,整个服务就挂了。

ファイル

nacos官网推荐的方法是使用虚拟ip的方法,如下:

ファイル

  • 最开始虚拟ip192.168.161.6可能与192.168.161.3的主机绑定在一起,通过这两个ip都可以访问192.168.161.3主机的nacos服务。
  • 一旦192.168.161.3主机宕机或者其他网络故障,192.168.161.6会自动切换到与192.168.161.4或者192.168.161.5主机绑定在一起。这个过程被叫做虚拟ip的漂移。

这种虚拟ip的方法就是没有使用到负载均衡,访问的仍然是某一个节点的nacos服务,只不过形成了主从备份,提供了高可用。那既可以提供高可用,又可以提供负载均衡的办法可能有的朋友已经想到了,如下图:

ファイル

  • 在nacos服务的前端加上nginx或者haproxy的负载均衡器
  • 然后对负载均衡器使用虚拟ip,通过keepalived实现虚拟ip的漂移
  • 用户访问负载均衡器实现对nacos服务的访问,主nginx挂掉,虚拟ip漂移到从nginx负载均衡提供服务

六、nacos集群(虚拟ip漂移)

我们就拿官网中推荐的方法,使用虚拟ip访问nacos集群的方式做个例子讲解一下。为什么不讲第三种?一般系统架构水平到了的人听懂这种方式就知道第三种方式怎么做,水平不到的人听了第三种仍然还是不懂。

6.1.安装配置keepalived

在三台服务器上分别安装keepalived

yum install -y keepalived

在三台服务器上分别修改/etc/keepalived/keepalived.conf

vrrp_instance VI_1 {
    state MASTER
    interface enp0s8
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.161.6
    }
}
  • 一台服务器是MASTER,其他的服务器为BACKUP
  • interface 配置为我们刚刚查看的网卡的名称
  • virtual_router_id 必须一致,表示这三台服务器抢用一个虚拟ip。
  • 修改priority 优先级,三台服务器要不一样,比如:100、101、102,优先级最高的优先使用虚拟ip。MASTER的优先级一定要高于BACKUP主机
  • advert_int 是几台服务器之间的同步检查时间,1秒
  • authentication 的设置必须一致,这样这几台服务器才能通信
  • 修改virtual_ipaddress为三台服务器所在网段内未被占用的IP地址,比如:192.168.161.6

6.2。変更がファイアウォール
CentOS7ファイアウォールの設定開いている必要があり、そうでない場合は、仮想IP優先通信を使用することができない3つのホストは、すべてのMASTERは、仮想IPを設定されています。

firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0  --protocol vrrp -j ACCEPT;
firewall-cmd --reload;

6.3。スタートは、サービスをkeepalivedの

sudo systemctl restart keepalived.service

あなたの注意を楽しみにして

おすすめ

転載: www.cnblogs.com/zimug/p/12034550.html