要在三台机器上搭建Nacos集群并连接到同一个MySQL数据库,我们需要为每台机器准备一个docker-compose.yml
文件。每个文件将稍有不同,主要是服务的名称和端口映射,以确保它们可以在各自的机器上独立运行,并通过内部或外部网络互相通信。
以下是针对三台机器的docker-compose.yml
文件示例,考虑到Nacos服务的默认端口已经更改为8898:
Machine 1 (IP: 10.206.0.13)
version: '3'
services:
nacos1:
image: nacos/nacos-server:latest
environment:
- MODE=cluster
- NACOS_SERVERS=10.206.0.13:8898,10.206.0.8:8898,10.206.0.4:8898
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=10.206.0.7
- MYSQL_SERVICE_DB_NAME=nacos_config
- MYSQL_SERVICE_PORT=3396
- MYSQL_SERVICE_USER=shtcetcmysql
- MYSQL_SERVICE_PASSWORD=Shtcetc@2024
ports:
- "8898:8848"
restart: on-failure
Machine 2 (IP: 10.206.0.8)
version: '3'
services:
nacos2:
image: nacos/nacos-server:latest
environment:
- MODE=cluster
- NACOS_SERVERS=10.206.0.13:8898,10.206.0.8:8898,10.206.0.4:8898
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=10.206.0.7
- MYSQL_SERVICE_DB_NAME=nacos_config
- MYSQL_SERVICE_PORT=3396
- MYSQL_SERVICE_USER=shtcetcmysql
- MYSQL_SERVICE_PASSWORD=Shtcetc@2024
ports:
- "8898:8848"
restart: on-failure
Machine 3 (IP: 10.206.0.4)
version: '3'
services:
nacos3:
image: nacos/nacos-server:latest
environment:
- MODE=cluster
- NACOS_SERVERS=10.206.0.13:8898,10.206.0.8:8898,10.206.0.4:8898
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=10.206.0.7
- MYSQL_SERVICE_DB_NAME=nacos_config
- MYSQL_SERVICE_PORT=3396
- MYSQL_SERVICE_USER=shtcetcmysql
- MYSQL_SERVICE_PASSWORD=Shtcetc@2024
ports:
- "8898:8848"
restart: on-failure
这些文件应该在各自的机器上部署和运行。请注意以下几点:
- 每个服务都配置为参与到相同的Nacos集群中,通过
NACOS_SERVERS
环境变量列出了集群中所有实例的地址和端口。 - 端口映射将容器内的8848端口(Nacos默认端口)映射到宿主机的8898端口上,以符合新的默认端口配置。请确保这不会与宿主机上的其他服务冲突。
- 请根据实际部署情况调整
MYSQL_SERVICE_HOST
、MYSQL_SERVICE_DB_NAME
、MYSQL_SERVICE_PORT
、MYSQL_SERVICE_USER
和MYSQL_SERVICE_PASSWORD
环境变量,以确保能够成功连接到MySQL数据库。 restart: on-failure
策略确保了在服务因为错误退出时能够自动重启。
部署前,请确认每台机器的Docker和Docker Compose都已安装且更新到最新版本,且网络配置允许这些机器相互通信。