前言:最近在做毕设项目,由于是基于微服务的,所以逃不开部署nacos这个服务注册及配置中心,为了方便以后的项目部署,顺便就把nacos集群做了。
一、准备阶段
-
首先要在云服务器或者虚拟机下安装docker(我就不过多阐述了,网上都有)
-
docker拉取nacos以及nginx反向代理服务器镜像
#拉取nacos:1.4.1,我用的是这个版本 docker pull nacos/nacos-server:1.4.1 #拉取nginx docker pull nginx
-
查看镜像
docker images
-
做nacos持久化
在nacos/conf目录下找到nacos-mysql.sql文件
方法一:打开sql文件,在IDEA或是Navicat中连接数据库,新建数据库nacos,use nacos,复制粘贴sql文件中的sql语句
方法二:将sql文件上传到云服务器上,在此文件夹下顺序执行命令
mysql -uroot -p create database nacos; use nacos; source nacos-mysql.sql
二、nacos启动,依次启动
-
nacos1
docker run -d \ # 是否支持hostname -e PREFER_HOST_MODE=hostname \ # cluster模式/standalone模式 -e MODE=cluster \ # nacos 端口号 -e NACOS_APPLICATION_PORT=8845 \ # nacos cluster地址 -e NACOS_SERVERS="IP地址:8845,IP地址:8846,IP地址:8847" \ # mysql 数据库 -e SPRING_DATASOURCE_PLATFORM=mysql \ # mysql 主节点host -e MYSQL_SERVICE_HOST=IP地址 \ # mysql 主节点端口 -e MYSQL_SERVICE_PORT=3301 \ # 数据库用户名 -e MYSQL_SERVICE_USER=root \ # 数据库密码 -e MYSQL_SERVICE_PASSWORD=123456 \ # mysql 主节点数据库 -e MYSQL_SERVICE_DB_NAME=nacos \ # 数据库数量 -e MYSQL_DATABASE_NUM=1 \ # 设置 JVM 最大堆内存大小 -e JVM_XMS=256m \ # 设置 JVM 最初是堆内存大小 -e JVM_XMX=256m \ # 设置 JVM 堆内新生代的内存大小 -e JVM_XMN=128m \ -e JVM_MS=32m \ -e JVM_MMS=80m \ # 多网卡下的自定义nacos服务器IP -e NACOS_SERVER_IP=IP地址 \ -p 8845:8845 \ --name nacos1 \ nacos/nacos-server:1.4.1
-
nacos2
docker run -d \ -e PREFER_HOST_MODE=hostname \ -e MODE=cluster \ -e NACOS_APPLICATION_PORT=8846 \ -e NACOS_SERVERS="IP地址:8845,IP地址:8846,IP地址:8847" \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=IP地址 \ -e MYSQL_SERVICE_PORT=3301 \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ -e MYSQL_SERVICE_DB_NAME=nacos \ -e MYSQL_DATABASE_NUM=1 \ -e JVM_XMS=256m \ -e JVM_XMX=256m \ -e JVM_XMN=128m \ -e JVM_MS=32m \ -e JVM_MMS=80m \ -e NACOS_SERVER_IP=IP地址 \ -p 8846:8846 \ --name nacos2 \ nacos/nacos-server:1.4.1
-
nacos3
docker run -d \ -e PREFER_HOST_MODE=hostname \ -e MODE=cluster \ -e NACOS_APPLICATION_PORT=8847 \ -e NACOS_SERVERS="IP地址:8845,IP地址:8846,IP地址:8847" \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=IP地址 \ -e MYSQL_SERVICE_PORT=3301 \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ -e MYSQL_SERVICE_DB_NAME=nacos \ -e NACOS_SERVER_IP=IP地址 \ -e MYSQL_DATABASE_NUM=1 \ -e JVM_XMS=256m \ -e JVM_XMX=256m \ -e JVM_XMN=128m \ -e JVM_MS=32m \ -e JVM_MMS=80m \ -p 8847:8847 \ --name nacos3 \ nacos/nacos-server:1.4.1
-
查看运行的容器
docker ps
-
浏览器访问
三、nginx配置及启动
-
nginx的default.conf配置文件,我在服务器的root目录下
获取default.conf
#运行一个nginx,获取default.conf,之后删除容器(最后有基本命令) docker run -d --name nginxTest nginx docker cp nginxTest:/etc/nginx/conf.d/default.conf default.conf docker stop nginxTest docker rm nginxTest
原本的default
server { listen 80; listen [::]:80; server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
修改后
#新增 upstream cluster { server IP地址:8845; server IP地址:8846; server IP地址:8847; } server { listen 80; #listen [::]:80;#改正 server_name localhost; #access_log /var/log/nginx/host.access.log main; #添加 location /nacos { proxy_pass http://cluster; } location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
-
运行nginx
docker run -p 80:80 --name my-nginx -v /root/default.conf:/etc/nginx/conf.d/default.conf --privileged=true -d nginx docker ps
-
浏览器访问
docker基本的一些命令
-
查找镜像
docker search 镜像名
-
拉取镜像
docker pull 镜像名
-
查看镜像
docker images
-
删除镜像
docker rmi 镜像id
-
运行容器
docker run -d:后台运行 -p:端口映射 -e:自定义变量 --name:容器名称
-
修改容器为自启动
docker update 容器id/容器名 --restart=always
-
进入容器
docker exec -it 容器id/容器名 /bin/bash
-
查看所有容器
docker ps -a
-
查看运行中的容器
docker ps
-
停止容器
docker stop 容器id/容器名
-
删除容器
docker rm 容器id/容器名