目录
1.docker 搭建mysql主从
2.docker 搭建Nacos-server:1.3.1集群
2.1需要在数据库创建nacos需要的配置数据库
2.2docker 集群命令
2.3命令参数说明
2.4打开防火墙端口
2.5启动成功后 我们就可以访问 nacos 控制台了
3.docker 安装nginx
3.1.创建命令
3.2.nginx 配置内容
3.3nginx 支持五种分配模式
3.4重启nginx
3.5访问
docker mysql搭建
数据库初始化脚本:https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql
需要修改ip为自己的ip端口的话 -p 位置左边修改可访问端口 右边修改容器内端口默认8848
docker run -d \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8848 \
-e NACOS_SERVERS=ip:38848,ip:38849,ip:38850 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=ip \
-e MYSQL_SERVICE_PORT=33306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=980224 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_IP=ip \
-e JVM_XMS=215m -e JVM_XMX=215m -e JVM_XMN=215m \
-p 38848:8848 \
--name nacos48 \
--restart=always \
nacos/nacos-server:1.3.1
docker run -d \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8848 \
-e NACOS_SERVERS=ip:38848,ip:38849,ip:38850 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=ip \
-e MYSQL_SERVICE_PORT=33306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=980224 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_IP=ip \
-e JVM_XMS=215m -e JVM_XMX=215m -e JVM_XMN=215m \
-p 38849:8848 \
--name nacos49 \
--restart=always \
nacos/nacos-server:1.3.1
docker run -d \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8848 \
-e NACOS_SERVERS=ip:38848,ip:38849,ip:38850 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=ip \
-e MYSQL_SERVICE_PORT=33306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=980224 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_IP=ip \
-e JVM_XMS=215m -e JVM_XMX=215m -e JVM_XMN=215m \
-p 38850:8848 \
--name nacos50 \
--restart=always \
nacos/nacos-server:1.3.1
MODE=cluster 集群模式
NACOS_APPLICATION_PORT=8848 容器nacos端口
NACOS_SERVERS=ip:38848,ip:38849,ip:38850 集群每个nacos-server服务
SPRING_DATASOURCE_PLATFORM=mysql 独立支持mysql
NACOS_SERVER_IP=ip 可选值hostname/ip 默认ip
MYSQL_* 相关
MYSQL_SERVICE_DB_NAME=nacos_config 数据库初始化脚本数据库名称
数据库初始化脚本:https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql
JVM_XMS=215m -e JVM_XMX=215m -e JVM_XMN=215m
-p 38850:8848 38850宿主机端口:8848 nacos访问端口
--restart=always 重启docker服务会启动该容器
nacos/nacos-server:1.3.1 nacos镜像版本
如下直接全部复制进xshell
firewall-cmd --zone=public --add-port=38848/tcp --permanent
firewall-cmd --zone=public --add-port=38849/tcp --permanent
firewall-cmd --zone=public --add-port=38850/tcp --permanent
firewall-cmd --zone=public --add-port=33306/tcp --permanent
firewall-cmd --reload
如果是阿里云服务器要去开启安全组规则
访问地址1:http://宿主机IP:38848/nacos
访问地址2:http://宿主机IP:38849/nacos
访问地址3:http://宿主机IP:38850/nacos
默认登录账号密码都是nacos
如图则集群搭建成功
-v docker 挂载在宿主机位置需要自己创建好将自己位置放在-v 右边:左边
docker run -id --name=nginx_master -p 80:80 -v /home/dockerdata/nginx/nginx_master/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/dockerdata/nginx/nginx_master/logs:/var/log/nginx \
-v /home/dockerdata/nginx/nginx_master/html:/usr/share/nginx/html --restart=always nginx:1.19.0
补充
2.1.1docker容器设置自动启动
创建启动容器时加--restart=always
Flag Descriptionno 不自动重启容器. (默认value)on-failure 容器发生error而退出(容器退出状态不为0)重启容器unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器always 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
如果已经创建启动的容器,则使用update更新:docker update --restart=always nginx_master
修改配置文件ip为自己的ip
nginx.conf 位置:/home/dockerdata/nginx/nginx_master/conf/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 {
upstream nacos-cluster {
server ip:38848;
server ip:38849;
server ip:38850;
}
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;
server {
listen 80;
listen [::]:80;
server_name ip;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location /nacos {
proxy_pass http://nacos-cluster;
}
#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 变量名 {
#weigth参数表示权值,权值越高被分配到的几率越大
#max_fails 当有#max_fails个请求失败,就表示后端的服务器不可用,默认为1,将其设置为0可以关闭检查
#fail_timeout 在以后的#fail_timeout时间内nginx不会再把请求发往已检查出标记为不可用的服务器
}
!!!分配方式
Nginx的upstream支持5种分配方式,下面将会详细介绍,其中,前三种为Nginx原生支持的分配方式,后两种为第三方支持的分配方式:
1、轮询
轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器down掉后,能自动剔除。
upstream backend {
server 192.168.200.131:8848;
server 192.168.200.131:8849;
server 192.168.200.131:8850;
}
2、weight
轮询的加强版,即可以指定轮询比率,weight和访问几率成正比,主要应用于后端服务器异质的场景下。
upstream backend {
server 192.168.200.131:8848 weight=1;
server 192.168.200.131:8849 weight=2;
server 192.168.200.131:8850 weight=3;
}
3、ip_hash
每个请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,这样每个访客会固定访问一个后端服务器,可以解决session一致问题。
upstream backend {
ip_hash;
server 192.168.200.131:8848;
server 192.168.200.131:8849;
server 192.168.200.131:8850;
}
4、fair
fair顾名思义,公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即rt小的后端服务器优先分配请求。
upstream backend {
server 192.168.200.131:8848;
server 192.168.200.131:8849;
server 192.168.200.131:8850;
fair;
}
5、url_hash
与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。
upstream backend {
server 192.168.200.131:8848;
server 192.168.200.131:8849;
server 192.168.200.131:8850;
hash $request_uri;
hash_method crc32;
}
其中,hash_method为使用的hash算法,需要注意的是:此时,server语句中不能加weight等参数。
docker restart nginx_master
http://nginxIP/nacos