nacos 集群搭建
主机准备
IP | role |
---|---|
192.168.142.155 | slave02 |
192.168.142.156 | slave |
192.168.142.157 | master |
三台主机上分别构建 mysql 镜像
FROM mysql:8.0.31
ADD https://raw.githubusercontent.com/alibaba/nacos/develop/distribution/conf/mysql-schema.sql /docker-entrypoint-initdb.d/nacos-mysql.sql
RUN chown -R mysql:mysql /docker-entrypoint-initdb.d/nacos-mysql.sql
EXPOSE 3306
CMD ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
master 的 docker-compose.yml
services:nacos:hostname: mastercontainer_name: nacosimage: nacos/nacos-servervolumes:- ./cluster-logs/nacos1:/home/nacos/logsports:- "7848:7848"- "8848:8848"- "9868:9848"- "9850:9849"networks:- nacos_networkenvironment:- PREFER_HOST_MODE=master- NACOS_SERVERS=master:8848 slave:8848 slave02:8848- SPRING_DATASOURCE_PLATFORM=mysql- MYSQL_SERVICE_HOST=mysql- MYSQL_SERVICE_DB_NAME=nacos_devtest- MYSQL_SERVICE_PORT=3306- MYSQL_SERVICE_USER=nacos- MYSQL_SERVICE_PASSWORD=nacos- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true- NACOS_AUTH_IDENTITY_KEY=2222- NACOS_AUTH_IDENTITY_VALUE=2xxx- NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789restart: alwaysdepends_on:mysql:condition: service_healthymysql:container_name: mysqlimage: nacos-mysqlenvironment:- MYSQL_ROOT_PASSWORD=root- MYSQL_DATABASE=nacos_devtest- MYSQL_USER=nacos- MYSQL_PASSWORD=nacos- LANG=C.UTF-8volumes:- ./mysql:/var/lib/mysqlports:- "3306:3306"networks:- nacos_networkhealthcheck:test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]interval: 5stimeout: 10sretries: 10
networks:nacos_network:driver: bridge
slave 的 docker-compose.yml
services:nacos:hostname: slavecontainer_name: nacosimage: nacos/nacos-servervolumes:- ./cluster-logs/nacos1:/home/nacos/logsports:- "7848:7848"- "8848:8848"- "9868:9848"- "9850:9849"networks:- nacos_networkenvironment:- PREFER_HOST_MODE=slave- NACOS_SERVERS=master:8848 slave:8848 slave02:8848- SPRING_DATASOURCE_PLATFORM=mysql- MYSQL_SERVICE_HOST=mysql- MYSQL_SERVICE_DB_NAME=nacos_devtest- MYSQL_SERVICE_PORT=3306- MYSQL_SERVICE_USER=nacos- MYSQL_SERVICE_PASSWORD=nacos- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true- NACOS_AUTH_IDENTITY_KEY=2222- NACOS_AUTH_IDENTITY_VALUE=2xxx- NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789restart: alwaysdepends_on:mysql:condition: service_healthymysql:container_name: mysqlimage: nacos-mysqlenvironment:- MYSQL_ROOT_PASSWORD=root- MYSQL_DATABASE=nacos_devtest- MYSQL_USER=nacos- MYSQL_PASSWORD=nacos- LANG=C.UTF-8volumes:- ./mysql:/var/lib/mysqlports:- "3306:3306"networks:- nacos_networkhealthcheck:test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]interval: 5stimeout: 10sretries: 10
networks:nacos_network:driver: bridge
slave02 的 docker-compose.yml 文件
services:nacos:hostname: slave02container_name: nacosimage: nacos/nacos-servervolumes:- ./cluster-logs/nacos1:/home/nacos/logsports:- "7848:7848"- "8848:8848"- "9868:9848"- "9850:9849"networks:- nacos_networkenvironment:- PREFER_HOST_MODE=slave02- NACOS_SERVERS=master:8848 slave:8848 slave02:8848- SPRING_DATASOURCE_PLATFORM=mysql- MYSQL_SERVICE_HOST=mysql- MYSQL_SERVICE_DB_NAME=nacos_devtest- MYSQL_SERVICE_PORT=3306- MYSQL_SERVICE_USER=nacos- MYSQL_SERVICE_PASSWORD=nacos- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true- NACOS_AUTH_IDENTITY_KEY=2222- NACOS_AUTH_IDENTITY_VALUE=2xxx- NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789restart: alwaysdepends_on:mysql:condition: service_healthymysql:container_name: mysqlimage: nacos-mysqlenvironment:- MYSQL_ROOT_PASSWORD=root- MYSQL_DATABASE=nacos_devtest- MYSQL_USER=nacos- MYSQL_PASSWORD=nacos- LANG=C.UTF-8volumes:- ./mysql:/var/lib/mysqlports:- "3306:3306"networks:- nacos_networkhealthcheck:test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]interval: 5stimeout: 10sretries: 10
networks:nacos_network:driver: bridge
最终效果
打开浏览器分别使用三个 ip 地址访问
192.168.142.155:8848/nacos
192.168.142.156:8848/nacos
192.168.142.157:8848/nacos
三篇 docker-compose.yml 都大差不差只有一点变化
PREFER_HOST_MODE=slave
写自己的主机名即可