ナコス高可用性クラスタリングソリューション-Dockerバージョン

記事の推力

本稿の目的は、高可用性クラスタナコスを設定することです

チャート

全体的なアーキテクチャ:nginxの+ 3 + X-ナコス可用性のMySQL

参照構造からマスターコピーを使用して、可用性のMySQLをすることができるクラスタ・マスタのMySQLドッカー、ベースGTIDから構築します

テキストに対応する設定ファイルはGithubにアップロードされた、アドレス:https://github.com/hellxz/nacos-cluster-docker

テスト環境

サーバーのOS ホストIP ドッカーバージョン
Ubuntuのサーバ18.04 LTS 192.168.87.133 18.09.6
Ubuntuのサーバ18.04 LTS 192.168.87.139 18.09.7
Ubuntuのデスクトップ18.04 LTS 192.168.87.135 18.09.7

高可用性ナコスを達成するために、サーバー上に少なくとも3つの小さな負荷を必要とし、それが他のサービスと共存することができます

注意事項

  1. :可用性MySQLのアドレスは、ここで示されている10.2.7.29:334010.2.7.29:3341自分自身に置き換え
  2. ここでは10.2.7.29、ローカルエリアネットワーク、ある192.168.*仮想マシンのネットワーク、仮想マシンがLANにアクセスすることができます
  3. 初期化SQLのナコス片が公式を使用することができ、設定ファイルが用意されていない場合、デフォルトはすでにMySQLの初期化がnacos.sql、SQL会場に行われている高可用性と考えられているのGithub nacos.sqlを

設定ファイルのディレクトリ構造と説明

ディレクトリ説明

  • init.dディレクトリ/ custom.properties -公式が提供するオプション機能プロファイルは、ナコスノードは、このディレクトリに含まれています
  • 1-ナコス/ドッカー-作曲-nacos1.yml -第1のノードナコスのドッカー作曲プロファイル
  • 2-ナコス/ドッカー-作曲-nacos1.yml -ドッカー作曲プロファイル第2のノードナコス
  • 3-ナコス/ドッカー-作曲-nacos1.yml -ドッカー-プロフィール第3ノードナコスの構図

これらに加えて、それぞれにnacos-*以下のディレクトリ、コンテナを起動するためにドッキングウィンドウ-構成コマンドを使用して、それが作成されますcluster-logsディレクトリを、

私はそれが最も一般的に使用されるnacos.logされるべきだと思います

プロフィールコンテンツ

133サーバーdocker-compose-nacos1.yml

version: '3' 
services:
  # nacos-server服务注册与发现,配置中心服务    
  docker-nacos-server:
    image: nacos/nacos-server:1.0.1
    container_name: nacos-server-1
    ports:
      - "8848:8848"
      - "9555:9555"
    networks: 
      - nacos_net
    restart: on-failure
    privileged: true
    environment:
      PREFER_HOST_MODE: ip #如果支持主机名可以使用hostname,否则使用ip,默认也是ip
      SPRING_DATASOURCE_PLATFORM: mysql #数据源平台 仅支持mysql或不保存empty
      NACOS_SERVER_IP: 192.168.87.133 #多网卡情况下,指定ip或网卡
      NACOS_SERVERS: 192.168.87.133:8848 192.168.87.139:8848 192.168.87.135:8848 #集群中其它节点[ip1:port ip2:port ip3:port]
      MYSQL_MASTER_SERVICE_HOST: 10.2.7.29 #mysql配置,Master为主节点,Slave为从节点
      MYSQL_MASTER_SERVICE_PORT: 3340
      MYSQL_MASTER_SERVICE_DB_NAME: nacos
      MYSQL_MASTER_SERVICE_USER: root
      MYSQL_MASTER_SERVICE_PASSWORD: password
      MYSQL_SLAVE_SERVICE_HOST: 10.2.7.29
      MYSQL_SLAVE_SERVICE_PORT: 3341
      #JVM调优参数
      #JVM_XMS:  #-Xms default :2g
      #JVM_XMX:  #-Xmx default :2g
      #JVM_XMN:  #-Xmn default :1g
      #JVM_MS:   #-XX:MetaspaceSize default :128m
      #JVM_MMS:  #-XX:MaxMetaspaceSize default :320m
      #NACOS_DEBUG: n #是否开启远程debug,y/n,默认n
      #TOMCAT_ACCESSLOG_ENABLED: true #是否开始tomcat访问日志的记录,默认false
    volumes:
      - ./cluster-logs/nacos1:/home/nacos/logs #日志输出目录
      - ../init.d/custom.properties:/home/nacos/init.d/custom.properties #../init.d/custom.properties内包含很多自定义配置,可按需配置

networks:
  nacos_net:
    driver: bridge

139サーバーdocker-compose-nacos2.yml

version: '3' 
services:
  # nacos-server服务注册与发现,配置中心服务    
  docker-nacos-server:
    image: nacos/nacos-server:1.0.1
    container_name: nacos-server-2
    ports:
      - "8848:8848"
      - "9555:9555"
    networks: nacos_net
    restart: 
      - on-failure
    privileged: true
    environment:
      PREFER_HOST_MODE: ip #如果支持主机名可以使用hostname,否则使用ip,默认也是ip
      SPRING_DATASOURCE_PLATFORM: mysql #数据源平台 仅支持mysql或不保存empty
      NACOS_SERVER_IP: 192.168.87.139 #多网卡情况下,指定ip或网卡
      NACOS_SERVERS: 192.168.87.133:8848 192.168.87.139:8848 192.168.87.135:8848 #集群中其它节点[ip1:port ip2:port ip3:port]
      MYSQL_MASTER_SERVICE_HOST: 10.2.7.29 #mysql配置,Master为主节点,Slave为从节点
      MYSQL_MASTER_SERVICE_PORT: 3340
      MYSQL_MASTER_SERVICE_DB_NAME: nacos
      MYSQL_MASTER_SERVICE_USER: root
      MYSQL_MASTER_SERVICE_PASSWORD: password
      MYSQL_SLAVE_SERVICE_HOST: 10.2.7.29
      MYSQL_SLAVE_SERVICE_PORT: 3341
      #JVM调优参数
      #JVM_XMS:  #-Xms default :2g
      #JVM_XMX:  #-Xmx default :2g
      #JVM_XMN:  #-Xmn default :1g
      #JVM_MS:   #-XX:MetaspaceSize default :128m
      #JVM_MMS:  #-XX:MaxMetaspaceSize default :320m
      #NACOS_DEBUG: n #是否开启远程debug,y/n,默认n
      #TOMCAT_ACCESSLOG_ENABLED: true #是否开始tomcat访问日志的记录,默认false
    volumes:
      - ./cluster-logs/nacos2:/home/nacos/logs #日志输出目录
      - ../init.d/custom.properties:/home/nacos/init.d/custom.properties #../init.d/custom.properties内包含很多自定义配置,可按需配置

networks:
  nacos_net:
    driver: bridge

135サーバーdocker-compose-nacos3.yml

version: '3' 
services:
  # nacos-server服务注册与发现,配置中心服务    
  docker-nacos-server:
    image: nacos/nacos-server:1.0.1
    container_name: nacos-server-3
    ports:
      - "8848:8848"
      - "9555:9555"
    networks: 
      - nacos_net
    restart: on-failure
    privileged: true
    environment:
      PREFER_HOST_MODE: ip #如果支持主机名可以使用hostname,否则使用ip,默认也是ip
      SPRING_DATASOURCE_PLATFORM: mysql #数据源平台 仅支持mysql或不保存empty
      NACOS_SERVER_IP: 192.168.87.135 #多网卡情况下,指定ip或网卡
      NACOS_SERVERS: 192.168.87.133:8848 192.168.87.139:8848 192.168.87.135:8848 #集群中其它节点[ip1:port ip2:port ip3:port]
      MYSQL_MASTER_SERVICE_HOST: 10.2.7.29 #mysql配置,Master为主节点,Slave为从节点
      MYSQL_MASTER_SERVICE_PORT: 3340
      MYSQL_MASTER_SERVICE_DB_NAME: nacos
      MYSQL_MASTER_SERVICE_USER: root
      MYSQL_MASTER_SERVICE_PASSWORD: password
      MYSQL_SLAVE_SERVICE_HOST: 10.2.7.29
      MYSQL_SLAVE_SERVICE_PORT: 3341
      #JVM调优参数
      #JVM_XMS:  #-Xms default :2g
      #JVM_XMX:  #-Xmx default :2g
      #JVM_XMN:  #-Xmn default :1g
      #JVM_MS:   #-XX:MetaspaceSize default :128m
      #JVM_MMS:  #-XX:MaxMetaspaceSize default :320m
      #NACOS_DEBUG: n #是否开启远程debug,y/n,默认n
      #TOMCAT_ACCESSLOG_ENABLED: true #是否开始tomcat访问日志的记录,默认false
    volumes:
      - ./cluster-logs/nacos3:/home/nacos/logs #日志输出目录
      - ../init.d/custom.properties:/home/nacos/init.d/custom.properties #../init.d/custom.properties内包含很多自定义配置,可按需配置

networks:
  nacos_net:
    driver: bridge

ナコス共通init.d/custom.properties、公式と一致し、需要の使用

#spring.security.enabled=false
#management.security=false
#security.basic.enabled=false
#nacos.security.ignore.urls=/**
#management.metrics.export.elastic.host=http://localhost:9200
# metrics for prometheus
management.endpoints.web.exposure.include=*

# metrics for elastic search
#management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost:9200

# metrics for influx
#management.metrics.export.influx.enabled=false
#management.metrics.export.influx.db=springboot
#management.metrics.export.influx.uri=http://localhost:8086
#management.metrics.export.influx.auto-create-db=true
#management.metrics.export.influx.consistency=one
#management.metrics.export.influx.compressed=true

今、すべての設定ファイルを一緒にし、各ノードがナコスの必要とすることにinit.dディレクトリを、それぞれに個別に存在しないnacos-*直接にコピーされたフォルダ全体を、コピー

ナコスクラスタを起動します

コンフィギュレーションファイルをコピーします

コピーnacos-cluster-docker設定ファイルの上に、以上3つのホストにディレクトリが良い変更されました

次のように対応関係は以下のとおりです。

  • 192.168.87.133はナコス-1に対応します
  • 192.168.87.139はナコス-2に対応します
  • 192.168.87.135はナコス-3を対応します

コンテナを開始

それぞれ、各ホストにそれぞれ対応するナコスディレクトリに、容器は、次のコマンドを開始します。

133サーバー

$ cd nacos-cluster-docker/nacos-1
$ docker-compose -f docker-compose-nacos1.yml up -d

139サーバー

$ cd nacos-cluster-docker/nacos-2
$ docker-compose -f docker-compose-nacos2.yml up -d

135サーバー

$ cd nacos-cluster-docker/nacos-3
$ docker-compose -f docker-compose-nacos3.yml up -d

ログの表示

対応nacos- *ディレクトリにそれぞれログを表示、実行

tail -f tail -f cluster-logs/nacos*/nacos.log

アクセスナコスUIインターフェース

ここでは、ディスプレイの下の133ページを使用して、サーバー、

アクセスhttp://192.168.87.133:8848/nacos、ログインページを入力し、デフォルトのユーザー名とパスワードをされていますnacos

私は、SQLのテストは通常、ここにコードを配置するために使用されている復元するために、ここで我々の焦点だクラスタ管理 ]> [ ノードリストここ

ここでは、通常のすべて、LEADERと従動が選択されている、各クラスタノードが通常となっているナコスを見ます

nginxの設定

私たちは春ブーツやSpringクラウドプロジェクトで使用しているナコスのクラスタ構成に加えて、あなただけのナコスサーバ、使用nginxのプロキシの負荷分散を指すURLを指定することができます

そう、本番環境のベストプラクティスもnginxのホストを変更した後、nginxのでドメイン名を使用する場合、クライアントはちょうどnginxのの新しいIPを指すようにドメイン名を使用して、設定ファイルを変更する必要はありません

これは、主要構成を示しています

http{
    upstream nacos-cluster {
        server 192.168.87.133:8848;
        server 192.168.87.139:8848;
        server 192.168.87.135:8848;
    }
    server {
        listen 8848;
        location /{
            proxy_pass http://nacos-cluster;
        }
    }
}

スタートnginxのは、どこnginxの現在のホスト接続をテストするためのコードを使用してIP:8848

ここでは、サービスが正常にクラスタに登録されている見ることができます

問題が発生しました

クライアントはクラスタを登録することはできません

仮想マシンのヒープメモリをチェックする次のセットナコスに焦点を当て、ナコスクラスタに接続することはできません最初、私はデフォルトの最大ヒープメモリ2Gを使用し、仮想マシンが2Gメモリに分けることができ、クライアントが発生した場合は、サービスを開始また、少しの間の通常、その後、いくつかのサービスノードを表示するために始めた、いくつかは、リストを表示し、適切に接続することはできません接続するためにクライアントを使用し、示唆していないDown Server responseようなプロンプト

解決策:仮想マシンのメモリサイズ、形状を変更するか、ナコスヒープメモリを変更

幸せ:この記事では、それが助け場合、見直し、勧告、あなたのための三重の関心を歓迎し、終了します。

この記事Hellxz学びと実践の記事で、豊胸手術の禁止バックル、コードのファン、爬虫類をクロールAMW他のサードパーティ製のネットワークのウェブサイトは、目立つソースを明記してください。https://www.cnblogs.com/hellxz/p/ナコス-クラスタdocker.html

おすすめ

転載: www.cnblogs.com/hellxz/p/nacos-cluster-docker.html