说明: 如果只需要搭建单节点nacos,请参照我的这篇文章
一、环境准备
| 资源 | 版本 | 说明 | 
|---|---|---|
| docker | 1.17+ | 用于安装nacos及mysql等依赖 | 
| nacos | 2.1.1 | nacos | 
| mysql | 5.6+ | 用于数据持久化,本文使用mysql8.0.34 | 
二、安装mysql
说明: 本次安装mysql将以docker的形式安装,如若需要使用二进制的方式安装,请参照我如下这篇CentOS7.x的mysql8.0.21离线安装的文章,如果你的mysql需要二进制且为主从安装,则可以参考我如下这篇linux(CentOS7.x)搭建mysql8.x主从的文章。
1. mysql本地目录创建
mkdir /data
2.执行运行脚本
docker run -d -p 3306:3306 \
--name mysql8034 --restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /data/mysql8034:/var/lib/mysql \
mysql:8.0.34
三、nacos目录准备
说明: 本次搭建均在同一台服务器上,以IP 172.23.144.1为例,以目录/data目录为例,且目录下创建3个文件夹分别对应3个nacos应用数据目录
mkdir /data/{nacos8848,nacos8858,nacos8868}
| IP | 服务端口 | gRpc端口 | 
|---|---|---|
| 172.23.144.1 | 8848 | 9848 | 
| 172.23.144.1 | 8858 | 9858 | 
| 172.23.144.1 | 8868 | 9868 | 
1. 8848端口的nacos脚本
docker run -d --link mysql8034 --restart=always \
-v /data/nacos8848:/home/nacos/data \
--privileged=true \
-e JVM_XMS=512m -e JVM_XMX=2048m \
-e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=9000&socketTimeout=9000&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8848 \
-e NACOS_SERVERS="172.23.144.1:8848,172.23.144.1:8858,172.23.144.1:8868" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql8034 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos_cluster \
-e NACOS_SERVER_IP=172.23.144.1 \
-p 8848:8848 -p 9848:9848 -p 9849:9849 \
--name nacos-cluster-8848 nacos/nacos-server:v2.1.1
执行参数说明:
| 参数 | 说明 | 
|---|---|
| –link mysql8034 | 将 Docker运行的mysql容器且该容器名称为mysql8034,链接到本容器当中,作为本容器到上述容器的主机名映射,意思就是:本容器所需用到mysql的IP的地方,均可以使用mysql8034作为替代。 | 
| MYSQL_SERVICE_HOST=mysql8034 | 参考上述示意,此上述作用的具体实现 | 
| JVM_XMS=512m JVM_XMX=2048m | 指定运行的 jvm大小 | 
| MYSQL_SERVICE_DB_PARAM | 连接 mysql的连接参数 | 
| MODE=cluster | 表示该 nacos为集群启动 | 
| NACOS_APPLICATION_PORT=8848 | nacos服务的端口 | 
| MYSQL_SERVICE_PORT=3306 | 连接 mysql的端口 | 
| SPRING_DATASOURCE_PLATFORM=mysql | 指定连接的数据库平台为 mysql | 
| MYSQL_SERVICE_USER=root | 指定连接的数据库用户名为 root | 
| MYSQL_SERVICE_PASSWORD=123456 | 指定连接的数据库密码为 123456 | 
| MYSQL_SERVICE_DB_NAME=nacos_cluster | 指定连接的数据库库名为 nacos_cluster | 
| NACOS_SERVER_IP=172.23.144.1 | 指定nacos集群注册到服务器上的IP地址为 172.23.144.1 | 
| -p 8848:8848 -p 9848:9848 -p 9849:9849 | 指定将所需的 8848,9848,9849端口开放出来 | 
| nacos/nacos-server:v2.1.1 | 指定nacos镜像的版本为 v2.1.1 | 
2. 8858端口的nacos脚本
docker run -d --link mysql8034 --restart=always \
-v /data/nacos8858:/home/nacos/data \
--privileged=true \
-e JVM_XMS=512m -e JVM_XMX=2048m \
-e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=9000&socketTimeout=9000&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8858 \
-e NACOS_SERVERS="172.23.144.1:8848,172.23.144.1:8858,172.23.144.1:8868" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql8034 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos_cluster \
-e NACOS_SERVER_IP=172.23.144.1 \
-p 8858:8858 -p 9858:9858 -p 9859:9859 \
--name nacos-cluster-8858 nacos/nacos-server:v2.1.1
3. 8868端口的nacos脚本
docker run -d --link mysql8034 --restart=always \
-v /data/nacos8868:/home/nacos/data \
--privileged=true \
-e JVM_XMS=512m -e JVM_XMX=2048m \
-e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=9000&socketTimeout=9000&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8868 \
-e NACOS_SERVERS="172.23.144.1:8848,172.23.144.1:8858,172.23.144.1:8868" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql8034 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos_cluster \
-e NACOS_SERVER_IP=172.23.144.1 \
-p 8868:8868 -p 9868:9868 -p 9869:9869 \
--name nacos-cluster-8868 nacos/nacos-server:v2.1.1
说明: 执行如下命令即可看到下图所示:
docker ps

4. 测试
说明: 打开浏览器访问http://172.23.144.1:8848/nacos或者http://172.23.144.1:8858/nacos或者http://172.23.144.1:8868/nacos,如若出现如下界面表示搭建成功!
 
四、运行nginx容器
1. 首先需要在/data目录创建一个配置文件nginx.conf
 
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
  worker_connections 1024;
}
http {
  include /etc/nginx/mime.types;
  default_type application/octet-stream;
  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  access_log /var/log/nginx/access.log main;
  sendfile on;
  #tcp_nopush     on;
  keepalive_timeout 65;
  #gzip  on;
include /etc/nginx/conf.d/*.conf;
#1这里是需要添加的
  #命名时需要注意,名称不能带下划线"_",否则会报错
  upstream nacosCluster {
    server 172.23.144.1:8848;
    server 172.23.144.1:8858;
    server 172.23.144.1:8868;
  }
  server {
    listen 8878;
    server_name localhost;
    location / {
      proxy_pass http://nacosCluster/;
    }
  }
  #1到这里结束
}
#2这里是需要添加的,与http同级
stream {
#命名时需要注意,名称不能带下划线"_",否则会报错
  upstream nacosGrpc {
    server 172.23.144.1:9848;
    server 172.23.144.1:9858;
    server 172.23.144.1:9868;
  }
  server {
    listen 9878; #nginx监听偏移1000的端口,因为nacos客户端会链接 8878+1000 这个端口,代理的是nacos服务端偏移后的端口
    proxy_pass nacosGrpc;
  }
}
#2到这里结束
2. 创建nginx容器(对外代理端口为8878,提供给客户端的端口为9878)
 
docker run -d -p 8878:8878 -p 9878:9878 \
-v /data/nginx.conf:/etc/nginx/nginx.conf \
--name nacos_proxy --restart=always nginx:1.18.0
3. 测试
说明: 打开浏览器访问http://172.23.144.1:8878/nacos,出现如下界面表示搭建成功。

 集群搭建工作,到此圆满结束!喜欢的朋友留个赞再走吧~,欢迎收藏、评论。


















