nacos集群部署

mysql安装与基操

  • 拉取mysql

docker pull mysql:8.0.27
  • 定义挂载目录

mkdir -p /home/mysql/{conf,data}
  • 配置my.cnf (window中是my.ini)

  • 可以不用配置

  • 开启mysql容器(bridge)

docker run -itd -p 2333:3306 \
--name mysql \
-v /home/mysql/conf/my.cnf:/etc/my.cnf \
-v /home/mysql/data:/var/lib/mysql \
--privileged=true \
--restart=always \
-e MYSQL_ROOT_PASSWORD=root123 \
-d mysql:8.0.27

privileged=true:使用该参数,container内的root拥有真正的root权限, 否则,container内的root只是外部的一个普通用户权限

restart=always:容器自动启动参数,其值可以为[no,on-failure,always]

  • no为默认值,表示容器退出时,docker不自动重启容器

  • on-failure表示,若容器的退出状态非0,则docker自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃

  • always表示,只要容器退出,则docker将自动重启容器

  • 查看user表

select host, user, authentication_string, plugin from user;
  • 查看root权限

SHOW GRANTS FOR 'root'@'%';
  • nacos数据库配置

  • nacos-mysql.sql 数据脚本导入数据库

默认的bridge网桥无法指定固定的ip,则会导致mysql服务的ip不固定,最好配置为自定义网络

docker run -itd -p 2333:3306 \
--name mysql \
--net mynet --ip 172.18.1.30 \
-v /home/mysql/conf/my.cnf:/etc/my.cnf \
-v /home/mysql/data:/var/lib/mysql \
--privileged=true \
--restart=always \
-e MYSQL_ROOT_PASSWORD=root123 \
-d mysql:8.0.27

mysql操作(navicat无法连接)

  • 修改用户密码

alter user 'root'@'%' identified with mysql_native_password by 'root123';
flush privileges;
  • 记得查看host是否为%

nacos服务部署

  • 拉取镜像

docker pull nacos/nacos-server
  • 启动nacos(设置启动参数)

docker run -it \
-e PREFER_HOST_MODE=ip \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.17.0.2 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root123 \
-p 9901:8848 \
--name nacos \
--restart=always \
nacos/nacos-server

如果出现 No DataSource set

  • 检查ip是否对应

  • 是否在同一网段下

  • 检查数据库名称

  • 检查root与密码

  • 检查数据库中是否存在对应的表(是否执行脚本)

  • 在控制台获得nacos配置

curl -X GET "http://ip:8848/nacos/v1/cs/configs?dataId=xx.yml&group=DEFAULT_GROUP"
curl -X GET "http://172.17.0.3:8848/nacos/v1/cs/configs?dataId=test.yml&group=DEFAULT_GROUP"

nacos集群搭建

基于自定义网络: 可以自定义ip

docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.18.1.42:8848 172.18.1.43:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.18.1.30 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root123 \
-p 9901:8848 \
--name nacos01 \
--net mynet --ip 172.18.1.41 \
--restart=always \
nacos/nacos-server
docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.18.1.41:8848 172.18.1.43:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.18.1.30 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root123 \
-p 9902:8848 \
--name nacos02 \
--net mynet --ip 172.18.1.42 \
--restart=always \
nacos/nacos-server
docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.18.1.41:8848 172.18.1.42:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.18.1.30 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root123 \
-p 9903:8848 \
--name nacos03 \
--net mynet --ip 172.18.1.43 \
--restart=always \
nacos/nacos-server

反向代理(负载均衡)

upstream tomcatList {
    server 172.18.0.5:8081 weight=1;
    server 172.18.0.3:8081 weight=2;
    server 172.18.0.4:8081 weight=2;
}

upstream nacosList {
    server 172.18.1.41:8848 weight=1;
    server 172.18.1.42:8848 weight=2;
    server 172.18.1.43:8848 weight=2;
}

server {

    listen  80;
    server_name  www.zking.com;

    location / {
        root   /etc/nginx/html/;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location /nacos {
        proxy_pass  http://nacosList;
    }

    location ~^/api/ {
        rewrite ^/api/(.*)$ /$1 break;
        proxy_pass  http://tomcatList;
        proxy_redirect default;
    }

}
  • 方法一

docker run -itd \
--name nginx \
-v /home/nginx/conf.d:/etc/nginx/conf.d \
-v /home/nginx/html:/etc/nginx/html \
-v /home/nginx/log:/usr/log/nginx \
-p 8080:80 \
nginx
docker network connect mynet nginx
  • 方法二

docker run -itd \
--name nginx \
--net mynet \
-v /home/nginx/conf.d:/etc/nginx/conf.d \
-v /home/nginx/html:/etc/nginx/html \
-v /home/nginx/log:/usr/log/nginx \
-p 8080:80 \
nginx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值