記事の推力
本稿の目的は、高可用性クラスタナコスを設定することです
チャート
全体的なアーキテクチャ: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つの小さな負荷を必要とし、それが他のサービスと共存することができます
注意事項
- :可用性MySQLのアドレスは、ここで示されている
10.2.7.29:3340
、10.2.7.29:3341
、自分自身に置き換え- ここでは
10.2.7.29
、ローカルエリアネットワーク、ある192.168.*
仮想マシンのネットワーク、仮想マシンがLANにアクセスすることができます- 初期化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