Docker-compose部署nacos集群及nginx实现负载均衡

目录​​​​

一、环境

二、部署过程

1.docker和docker-compose部署

2.拉取镜像

3.创建网络

4.创建目录 

5.启动数据库并导入sql

6.启动

7. 配置nginx代理

总结


一、环境

主机:centos7.9

docker版本:24.0.6

docker-compose版本:2.23.1

nacos镜像版本:2.1.1

数据库镜像版本:Mariadb10.5.16

nginx镜像版本:1.24.0

二、部署过程

1.docker和docker-compose部署

过程,略,脚本一建安装

2.拉取镜像

docker pull nacos/nacos-server:v2.1.1
docker pull mariadb:10.5.16
docker pull nginx:1.24.0

3.创建网络

docker network create --driver bridge --subnet 192.168.40.0/16 --gateway 192.168.40.1 nacos_net

4.创建目录 

mkdir /etc/docker/nacos-compose


#nacos-compose目录结构如下:

nacos-compose
	├── docker-compose.yml -- docker-compose 配置文件  
	├── master  -- nacos节点的相关文件
		   ├── application.properties -- naocs节点挂载的配置文件
		   ├── logs   -- nacos 节点挂载的日志文件夹
	├── slave1  -- nacos节点的相关文件
		   ├── application.properties -- naocs节点挂载的配置文件
		   ├── logs   -- nacos 节点挂载的日志文件夹
	├── slave2  -- nacos节点的相关文件
		   ├── application.properties -- naocs节点挂载的配置文件
		   ├── logs   -- nacos 节点挂载的日志文件夹

docker-compose.yml内容如下:

version : '2.23.1'  #docker-compose版本
services:
  nacos-master:
    # 容器名称
    container_name: nacos-master
    # 镜像
    image: nacos/nacos-server:v2.1.1
    environment:
      # 集群节点
      - NACOS_SERVERS=192.168.40.2:8848 192.168.40.3:8848 192.168.40.4:8848
    volumes:
      # 文件挂载
      - ./master/logs/:/home/nacos/logs
      - ./master/application.properties:/home/nacos/conf/application.properties
    ports:
      # 端口映射
      - "8848:8848"
      - "9848:9848"
      - "9849:9849"
      # 指定网络,IP
    networks:
      nacos_net:
        ipv4_address: 192.168.40.2

  nacos-slave1:
    container_name: nacos-slave1
    image: nacos/nacos-server:v2.1.1
    environment:
      - NACOS_SERVERS=192.168.40.2:8848 192.168.40.3:8848 192.168.40.4:8848
    volumes:
      - ./slave1/logs/:/home/nacos/logs
      - ./slave1/application.properties:/home/nacos/conf/application.properties
    ports:
      - 8850:8848
      - 9850:9848
      - 9851:9849
    networks:
      nacos_net:
        ipv4_address: 192.168.40.3

  nacos-slave2:
    container_name: nacos-slave2
    image: nacos/nacos-server:v2.1.1
    environment:
      - NACOS_SERVERS=192.168.40.2:8848 192.168.40.3:8848 192.168.40.4:8848
    volumes:
      - ./slave2/logs/:/home/nacos/logs
      - ./slave2/application.properties:/home/nacos/conf/application.properties
    ports:
      - "8852:8848"
      - "9852:9848"
      - "9853:9849"
    networks:
      nacos_net:
        ipv4_address: 192.168.40.4
# 指定使用已经创建的网络
networks:
  nacos_net:
    external: true

application.properties内容如下


server.servlet.contextPath=

server.error.include-message=ON_PARAM
# 端口号
server.port=8848

# 数据库信息的配置
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.40.5:3306/nacos_config?useUnicode=true&characterEncoding=utf8&useSSL=false
db.user=root
db.password=123456

# 以下为默认配置,暂时不用管
### Connection pool configuration: hikariCP
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000

nacos.naming.empty-service.auto-clean=true
nacos.naming.empty-service.clean.initial-delay-ms=50000
nacos.naming.empty-service.clean.period-time-ms=30000

management.metrics.export.elastic.enabled=false

management.metrics.export.influx.enabled=false

server.tomcat.accesslog.enabled=true

### The access log pattern:
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i

server.tomcat.basedir=file:.

nacos.core.auth.system.type=nacos

nacos.core.auth.enabled=true

nacos.core.auth.caching.enabled=true

nacos.core.auth.enable.userAgentAuthWhite=false

nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security

### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
### The default token:
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

cos.istio.mcp.server.enabled=false

5.启动数据库并导入sql

docker run -d --name mariadb --restart=always --network=nacos_net --ip=192.168.40.5 -e MYSQL_ROOT_PASSWORD=123456 mariadb:10.5.16


mysql -uroot -p123456

source /root/nacos_config.sql

6.启动

# -d 后台启动
docker-compose up -d

# 关闭
docker-compose stop
# 运行
docker-compose start
# 删除
docker-compose rm


#访问地址
宿主机ip:8848
宿主机ip:8850
宿主机ip:8852

7. 配置nginx代理

#使用镜像和本机的nginx都行,这里我使用的是镜像启的nginx,启动就不写了

#负载均衡,权重的什么的自己加
 upstream nacos_servers {
        server  宿主机:8848;
        server  宿主机:8850;
        server  宿主机:8852;
    }


server {
    listen       81;
    server_name  宿主机ip;

    location / {
            proxy_pass http://nacos_servers/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}



#访问地址
宿主机IP+81


总结

多多交流!

你可能感兴趣的:(nacos,docker-compose,docker,容器,运维)