栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Nacos高可用集群配置

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Nacos高可用集群配置

0 准备 0.1 环境

Nacos集群和数据库均部署在阿里云ECS服务器上。
版本:

nacos:1.4.2mysql:8nginx:1.20.2 1 配置Nacos集群 1.1 配置Mysql数据库 1.1.1 安装Mysql数据库

安装过程略。
参考:Mysql安装教程

配置数据库。
创建一个数据库名为nacos。下载好nacos-server安装包(地址在1.2节),使用nacos/conf/nacos-mysql.sql文件初始化数据库。创建结果如下

1.2 搭建集群(三个节点)

创建三个集群,分别是本地ip下的8848,8849,8850端口。

重要提醒!!:如果你使用的是nacos 2.x版本,因为nacos2.x版本使用新的通信协议,除了设置的8848端口,还会默认占用9848(8848+1000)和9849(8848+1001)。即:设置端口号为x,实际占用的还有x+1000和x+1001两个端口。所以,如果使用nacos2.x版本搭建集群,请设置端口为8848,8858,8868三个端口(举例)以避免端口冲突。

首先下载nacos-server-1.4.2安装包:地址

版本说明:
目前的最新版已经到2.0.3。一开始在本地单机模式运行的时候也使用该版本。但在集群配置时总是出现意外错误。因此这里改成2.0.3版本

解压安装包:

tar -zxvf nacos-server-1.4.2.tar.gz

将安装包移动至/usr/local目录下

mv -r nacos /usr/local/

修改nacos/conf/application.properties文件(相关配置已经在文档里给出,这里只需要解开注释即可):

#*************** Spring Boot Related Configurations ***************#
### Default web context path:
server.servlet.contextPath=/nacos
### Default web server port:
server.port=8848

#*************** Network Related Configurations ***************#
### If prefer hostname over ip for Nacos server addresses in cluster.conf:
# nacos.inetutils.prefer-hostname-over-ip=false

### Specify local server's IP:
# nacos.inetutils.ip-address=


#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://172.18.77.41:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456

### Connection pool configuration: hikariCP
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2

注意的点:

    相关配置解开注释即可db.url.0需要配置好数据库的ip地址。使用ECS服务器的应该写成内网或者公网ip地址设置好数据库的用户名和密码

创建cluster.conf文件

# 在conf文件夹下执行
cp cluster.conf.example cluster.conf

修改cluster.conf文件,定义集群中的节点信息

172.18.77.41:8848
172.18.77.41:8849
172.18.77.41:8850

注意:这个地址应该为eth0地址,此处为ECS的内网地址。

修改启动文件nacos/bin/startup.sh
**重要!!**观察代码可以发现,默认集群模式启动时,分配的内存为-Xms2g -Xmx2g -Xmn1g,如此开启三个节点会很快耗尽内存。我的ECS只有1个g的内存,ECS上启动一个节点就会导致卡死。这里建议修改为-Xms64m -Xmx64m -Xmn40m。

我设置过-Xmn=32m,后来报错是Tomcat启动错误。

#===========================================================================================
# JVM Configuration
#===========================================================================================
if [[ "${MODE}" == "standalone" ]]; then
    JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
    JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
else
    if [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; then
        JAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"
    fi
    JAVA_OPT="${JAVA_OPT} -server -Xms64m -Xmx64m -Xmn40m -XX:metaspaceSize=128m -XX:MaxmetaspaceSize=320m"
    JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumponOutOfMemoryError -XX:HeapDumpPath=${base_DIR}/logs/java_heapdump.hprof"
    JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"

fi

将nacos文件夹命名为nacos8848,并且复制额外两份nacos8849,nacos8850

mv nacos nacos8848
cp -r nacos8848 nacos8849
cp -r nacos8848 nacos8850

修改nacos8849和nacos8850的配置。只需要修改application.properties中定义的server.port

server.port=8849 #nacos8849配置
server.port=8850 #nacos8850配置

启动三个nacos节点

#在三个bin目录下执行
./startup.sh

观察start.out文件,确定三个节点均启动成功

[root@aliyunECS nacos8848]# tail -f /usr/local/nacos8848/logs/start.out 
2022-02-12 17:55:02,015 INFO Nacos is starting...

2022-02-12 17:55:03,055 INFO Nacos is starting...

2022-02-12 17:55:04,100 INFO Nacos is starting...

2022-02-12 17:55:05,253 INFO Nacos is starting...

2022-02-12 17:55:05,814 INFO Nacos started successfully in cluster mode. use external storage

访问控制台,确定三个节点均可以访问

注意:在虚拟机中创建集群时,确定防火墙已关闭。在ECS服务器上配置时,确定防火墙打开了8848,8849,8850三个端口。如果使用nacos2.x版本,还需要打开x+1000和x+1001等几个端口。

2 配置Nginx反向代理

在/usr/local/nginx/conf/nginx.conf中,增加以下代码,使得nginx可以反向代理到nacos集群。

upstream nacos_cluster {
      #注:这里配置为公网ip也是可以的
      server 172.18.77.41:8848;
      server 172.18.77.41:8849;
      server 172.18.77.41:8850;

    }

    server {
       listen   1111;
       server_name  localhost;
       location / {
                proxy_pass http://nacos_cluster;
                proxy_set_header Host $host:$server_port;
        }
    }

3 项目配置nacos-config
# bootstrap.yml
# 必须配置能够找到配置文件的信息:spring.application.name; spring.cloud.nacos.config.server-addr; spring.cloud.nacos.config.file-extention; spring.profiles.active
spring:
  cloud:
    nacos:
      config:
        server-addr: 120.78.228.224:1111
        file-extension: yaml
        #        namespace: fabadd97-ce57-4001-b62d-62a6650eca5f # 这里必须写命名空间的id值,不能写名字
        #        group: MY_GROUP
        extension-configs:
          - dataId: common.yaml
            group: DEFAULT_GROUP
            refresh: true
  application:
    name: payment-service
  profiles:
    active: dev

4 在nacos控制台配置服务的配置信息

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/733537.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号