环境

节点ipdocker版本服务器
192.168.0.20119.03.11centos7
192.168.0.20219.03.11centos7
192.168.0.20319.03.11centos7

安装docker-compose环境

首先检测是否有docker-compose环境
执行 docker-compose version
在这里插入图片描述
如果没有择安装docker-compose

安装docker-compose环境

yum install -y python3-pip

添加 pip 的镜像

cd ~
mkdir .pip
cd .pip
vi pip.conf

pip.conf 中的内容为

[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple/
trusted-host=pypi.tuna.tsinghua.edu.cn

然后

pip3 install docker-compose

执行效果如下图
在这里插入图片描述
安装完毕,查看docker-compose是否安装成功
执行 docker-compose version
在这里插入图片描述
到此为止,docker-compose环境安装完毕

搭建naocs集群

nacos集群的搭建我是学习的这篇博主的文章
Nacos高可用集群解决方案-Docker版本

为了方便快速一点,下面的配置先在第一个节点配置完毕,然后把目录直接通过ssh链接工具,复制到其他节点的相同路径下,然后再通过docker-compose各自启动各自的.yml,就完事,你懂我意思吧

目录结构

在这里插入图片描述

目录说明
  • init.d/custom.properties - 官方提供的自选功能配置文件,Nacos节点均包含此目录
  • nacos-1/docker-compose-nacos1.yml - 第一个Nacos节点的Docker-compose配置文件
  • nacos-2/docker-compose-nacos1.yml - 第二个Nacos节点的Docker-compose配置文件
  • nacos-3/docker-compose-nacos1.yml - 第三个Nacos节点的Docker-compose配置文件

除此之外,在每个nacos-*目录下边,使用docker-compose命令启动容器后,会创建出cluster-logs目录
在这里插入图片描述
最常用的是 nacos.log

编辑配置文件docker-compose-nacos

201节点的docker-compose-nacos1.yml

version: '3' 
services:  
  docker-nacos-server:
   	#nacos-server服务注册与发现,配置中心服务 
    image: nacos/nacos-server:1.1.4
    container_name: nacos-server-1
    ports:
      - "8848:8848"
      - "9555:9555"
    networks: 
      - nacos_net
    restart: on-failure
    privileged: true
    environment:
      #如果支持主机名可以使用hostname,否则使用ip,默认也是ip
      PREFER_HOST_MODE: 192.168.0.201 
      #数据源平台 仅支持mysql或不保存empty
      SPRING_DATASOURCE_PLATFORM: mysql 
      #一般是本机的IP地址
      NACOS_SERVER_IP: 192.168.0.201 
      #集群中其它节点[ip1:port ip2:port ip3:port]
      NACOS_SERVERS: 192.168.0.201:8848 192.168.0.202:8848 192.168.0.203:8848  
      #mysql配置,Master为主节点,Slave为从节点
      MYSQL_MASTER_SERVICE_HOST: 192.168.0.201  
      MYSQL_MASTER_SERVICE_PORT: 3306
      MYSQL_MASTER_SERVICE_DB_NAME: nacos_config
      MYSQL_MASTER_SERVICE_USER: root
      MYSQL_MASTER_SERVICE_PASSWORD: zaqxsw
      MYSQL_SLAVE_SERVICE_HOST: 192.168.0.202
      MYSQL_SLAVE_SERVICE_PORT: 3306
      #JVM调优参数
      JVM_XMS: 256m
      JVM_XMX: 256m
      JVM_XMN: 256m

    volumes:
      #日志输出目录
      - ./cluster-logs/nacos1:/home/nacos/logs 
      #../init.d/custom.properties内包含很多自定义配置,可按需配置
      - ./init.d/custom.properties:/home/nacos/init.d/

networks:
  nacos_net:
    driver: bridge

202和203的配置文件一模一样,就是把container_name参数,后面分别改成对应的nacos-server-2,nacos-server-3
NACOS_SERVER_IP:改成各自本机的IP

编辑custom.properties

#spring.security.enabled=false
#management.security=false
#security.basic.enabled=false
#nacos.security.ignore.urls=/**
#management.metrics.export.elastic.host=http://localhost:9200
# metrics for prometheus
management.endpoints.web.exposure.include=*

# metrics for elastic search
#management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost:9200

# metrics for influx
#management.metrics.export.influx.enabled=false
#management.metrics.export.influx.db=springboot
#management.metrics.export.influx.uri=http://localhost:8086
#management.metrics.export.influx.auto-create-db=true
#management.metrics.export.influx.consistency=one
#management.metrics.export.influx.compressed=true

直接复制进去,就完事了

启动Nacos集群

上面已经把每个节点的配置都配置好了,下面,启动!
201节点:
cd nacos-cluster-docker/nacos-1
docker-compose -f docker-compose-nacos1.yml up -d

202节点:
cd nacos-cluster-docker/nacos-2
docker-compose -f docker-compose-nacos2.yml up -d

203节点:
cd nacos-cluster-docker/nacos-3
docker-compose -f docker-compose-nacos3.yml up -d

查看日志:如查看201节点的日志,/nacos-cluster-docker/nacos-1/cluster-logs/nacos1/nacos.log

登录nacos UI界面

访问192.168.0.201:8848/nacos

在这里插入图片描述
其实每个节点都可以访问,这样就可以看到已经配置好的集群了

配置Nginx

nginx我们也用docker装

1.下载nginx镜像

docker pull nginx

2 运行nginx,目的是为了拿到配置文件 nginx.conf做修改

docker run --name nginx-test -p 8080:80 -d nginx

3.获取nginx.conf

docker cp nginx-test:/etc/nginx/nginx.conf /home/local

4.修改配置文件
vim /home/local/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;
	upstream nacos{
        server 192.168.0.201:8848 weight=1 max_fails=2 fail_timeout=10s;
        server 192.168.0.202:8848 weight=1 max_fails=2 fail_timeout=10s;
        server 192.168.0.203:8848 weight=1 max_fails=2 fail_timeout=10s;
    }
	server {
	  listen 8888;
	  server_name  192.168.0.201;
	  location /nacos{
		proxy_pass http://nacos;
	  }
	}
}

upstream 模块是指定了负载均衡的集群,轮询的地址,后面是跟的一些延迟,权重等参数
server里的listen,就是指定的启动的端口
server_name是访问IP地址

运行

docker run -p 8888:8888 --network=bridge --name nacosNginx -v /home/local/nginx.conf:/etc/nginx/nginx.conf --privileged=true -d nginx

遇到的问题
1.端口配置没有用
解决:
一开始run运行镜像时,没有加 - -net host ,导致docker里面的容器的ip无法识别

2.配置后访问502
upstream里面的ip+端口应该与nacos里面的一致

3.访问404
访问路径问题

http://192.168.142.128:1111/nacos(虚拟机ip+1111端口+/nacos( !!! ))

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐