集群部署

时间:2025-03-17 15:09:30

拉取mysql

docker pull mysql:8.0.27

定义挂载目录

mkdir -p /home/mysql/{conf,data}

配置(window中是)

省略

开启mysql容器(bridge)

docker run -itd -p 2333:3306 \
--name mysql \
-v /home/mysql/conf/:/etc/ \
-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不自动重启容器

no-failure表示,若容器的退出,则docker将自动重启容器

查看user表

select host, user,authentication_string, plugin from user

查看root权限

SHOW GRANTS FOR 'root'@'%'

 nacos数据库配置

省略

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

docker run -itd -p 2333:3306 \
--name mysql \
--net mynet --ip 172.18.1.30 \
-v /home/mysql/conf/:/etc/ \
-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 SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.17.0.2 \
-e MYSQL_SERVICE_PSOT=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数据持久化测试

忽略

注:在控制台获得nacos配置

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

nacos集群搭建


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

 docker run -it \
 -e PREFER_HOST_MODE=ip \
 -e MODE=cluster \
 -e NACOS_SERVERS="172.19.1.42:8848 172.19.1.43:8848"\
 -e SPRING_DATASOURCE_PLATFORM=mysql \
 -e MYSQL_SERVICE_HOST=172.19.1.33 \
 -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 mynet02 --ip 172.19.1.41 \
 --restart=always \
 nacos/nacos-server
 docker run -it \
 -e PREFER_HOST_MODE=ip \
 -e MODE=cluster \
 -e NACOS_SERVERS="172.19.1.41:8848 172.19.1.43:8848"\
 -e SPRING_DATASOURCE_PLATFORM=mysql \
 -e MYSQL_SERVICE_HOST=172.19.1.33 \
 -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 nacos02 \
 --net mynet02 --ip 172.19.1.42 \
 --restart=always \
 nacos/nacos-server
 docker run -it \
 -e PREFER_HOST_MODE=ip \
 -e MODE=cluster \
 -e NACOS_SERVERS="172.19.1.41:8848 172.19.1.42:8848"\
 -e SPRING_DATASOURCE_PLATFORM=mysql \
 -e MYSQL_SERVICE_HOST=172.19.1.33 \
 -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 nacos03 \
 --net mynet02 --ip 172.19.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 tomcatList{
    server 172.18.1.41:8048 weight=1;
    server 172.18.0.42:8048 weight=2;
    server 172.18.0.43:8048 weight=2;
}

server{

    listen  80;
    server_name ;

 
    location / {
        root    /etc/nginx/html/;
        index    ;
}
error_page 500 502 503 504 /;

location = /{
     root  /usr/share/nginx/html;
}

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

}

方法一:

docker run -itd \
--name nginx \
-v /home/nginx/:/etc/nginx/ \
-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/:/etc/nginx/ \
-v /home/nginx/html:/etc/nginx/html \
-v /home/nginx/log:/usr/log/nginx \
-p 8080:80 \
nginx