美文网首页
nacos从单体安装到集群配置

nacos从单体安装到集群配置

作者: 前浪浪奔浪流 | 来源:发表于2022-07-24 17:18 被阅读0次
  • 前置条件
  • 下载nacos
  • 上传nacos安装包到服务器上
  • 持久化数据库配置
  • 修改集群配置
  • 配置优化点
  • 复制集群节点
  • 启动集群服务
  • 配置nginx负载均衡
  • 访问nacos页面
  • 存在的坑点
  • 官方解释
  • 改动引起的变化

前置条件

nacos的安装过程。

  • 因为nacos需要依赖java,所以需要提前安装好jdk,官方推荐jdk8。

先卸载open-jdk
Centos系统有时候会有自带的open-jdk,需要卸载掉。执行命令如下:

rpm -qa | grep java       # 检查是否安装了open-jdk
rpm -e --nodeps xxxx    # xxxx表示通过上个命令查询到的open-jdk名称,上一步没查到,此步不执行

安装
上传JDK安装包,然后解压。(用rz或者scp都可以)

tar -xzvf jdk-8u11-linux-x64.tar.gz  -C /usr/local/

修改配置文件,先打开配置文件

vi /etc/profile
#在配置文件中添加如下配置内容
export JAVA_HOME=/usr/local/jdk1.8.0_11
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

应用修改的内容

source /etc/profile

检查是否安装成功

java -version

上面基础环境奠定了以后开始做nacos集群的安装和部署工作。

下载nacos

根据官方推荐,目前推荐使用2.0.3稳定版本。下载地址:nacos在github上的下载地址

特别提醒:

这里有个坑需要规避,进入这个下载地址后,不要直接点击后面的zip或者tar.gz下载,需要点击对应版本号,进入详情页面,拉到底部下载,下载的包名是nacos-server-2.0.3.tar.gz。如果直接点击后面的zip或者tar.gz下载,下载的包是nacos-2.0.2.tar.gz,这个不是编译好的安装包。

上传nacos安装包到服务器上

解压nacos安装包:
tar -xvf nacos-server-2.0.3.tar.gz -C /usr/local/

持久化数据库配置

进入/usr/local/nacos/conf/目录下,将application.properties配置文件中Connect URL of DB修改为如下:

#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql
## 如果使用数据库是MySQL8,需要加上此驱动名,否则不用加
jdbc.DriverClassName=com.mysql.cj.jdbc.Driver 
### Count of DB:
db.num=1

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

此外我还开启了如下配置,暂时不知道有无影响什么。

#*************** CMDB Module Related Configurations ***************#
### The interval to dump external CMDB in seconds:
 nacos.cmdb.dumpTaskInterval=3600

### The interval of polling data change event in seconds:
 nacos.cmdb.eventTaskInterval=10

### The interval of loading labels in seconds:
 nacos.cmdb.labelTaskInterval=300

### If turn on data loading task:
 nacos.cmdb.loadDataAtStart=false

将/usr/local/nacos/conf/目录下的nacos-mysql.sql文件复制到数据库所在的服务器内,创建名为nacos_config数据库,并在数据库内执行sql脚本文件;

## 上传nacos-mysql.sql文件到数据库所在服务器

## 创建数据库并执行脚本
mysql -uroot -ppass123456
create datasource nacos_config
use nacos_config
source /root/nacos-mysql.sql

修改集群配置

将/usr/local/nacos/conf目录下的cluster.conf.example文件复制一份并重命名为cluster.conf,修改其内容如下:

## 复制并重命名
cp cluster.conf.example cluster.conf
## 修改内容,将文件内最后三行换成现有的集群ip和端口,如果超过3台依次向后加即可
vim cluster.conf
## 修改后如下:
192.168.100.235:8848
192.168.100.236:8848
192.168.100.237:8848

配置优化点

这个优化点在服务器性能较好的情况下,可以不做,资源紧张的话,修改一下此配置更放心,进入nacos/bin目录,找到startup.sh文件,将文件中java堆栈的配置修改小一点,这里修改成128m,修改内容JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m",具体修改如下:

## 修改前的内容
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 -Xms2g -Xmx2g -Xmn1g -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

## 修改后的内容
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 -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
    JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"
    JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
fi

记得修改startup.sh 中的 JAVA_HOME=,修改后保存退出。

修改前:
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
修改后:
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/local/jdk1.8.0_11

复制集群节点

上面已经完成端口为8848节点的配置,接下来分别在236和237上做同样的配置
可以直接复制235上的配置文件给236和237用。

/usr/local/nacos/conf/application.properties
/usr/local/nacos/conf/cluster.conf
/usr/local/nacos/bin/startup.sh

将nacos 配置为系统服务

#建立service文件
vim /lib/systemd/system/nacos.service

[Unit]
Description=nacos
After=network.target 
[Service]
Type=forking
ExecStart=/usr/local/nacos/bin/startup.sh
ExecReload=/usr/local/nacos/bin/shutdown.sh
ExecStop=/usr/local/nacos/bin/shutdown.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target

如果是单机模式这个语句需要修改为如下,ExecStart=/usr/local/nacos/bin/startup.sh -m standalone

[Unit]
Description=nacos
After=network.target 
[Service]
Type=forking
ExecStart=/usr/local/nacos/bin/startup.sh -m standalone
ExecReload=/usr/local/nacos/bin/shutdown.sh
ExecStop=/usr/local/nacos/bin/shutdown.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
保存后执行以下命令
加载新建的nacos.service
systemctl daemon-reload
设置nacos.service 为开机启动
systemctl enable nacos.service
开启nacos.service服务
systemctl start nacos.service
关闭nacos.service服务
systemctl stop nacos.service
查看  nacos.service服务状态
systemctl status nacos.service -l

启动集群服务

分别在192.168.100.235、192.168.100.236和192.168.100.237上启动nacos.service服务

systemctl start nacos.service

systemctl status nacos.service -l

配置nginx负载均衡

主要配置负载和监听,配置内容如下:

## 在http下配置负载
upstream cluster {        
    server 192.168.100.235:8848;
    server 192.168.100.236:8848;
    server 192.168.100.237:8848;
}
## 在server内配置监听
listen       8848;     ## 监听8848端口                 
server_name  localhost;                                        
#charset koi8-r;                                                        
#access_log  logs/host.access.log  main;                                      
location / {                            
    #root   html;                       
    #index  index.html index.htm;       
    proxy_pass http://cluster;   ## 代理到负载上      
}

配置完成后启动或者重启nginx即可。

访问nacos页面

在浏览器中输入:http://192.168.100.245:8848/nacos,会弹出登录页面,默认用户名和密码都是nacos,到此集群部署大功告成。

存在的坑点

官方解释

nacos2.0版本相比1.x新增了gRPC的通信方式,因此需要增加两个端口,新增端口在配置的主端口(server.port)基础上,进行一定的偏移量自动生成。偏移规则:

端口 与主端口偏移量 描述
9848 1000 客户端gRPC请求服务端端口,用于客户端服务发起连接和请求
9849 1001 客户端gRPC请求服务端端口,用于服务间同步等

改动引起的变化

因为这个改动,在一台机器上部署nacos集群时,不能将运行端口设置为连续端口,比如:884088418842,否则会发生端口冲突。

运行在8840端口nacos服务实际上会占用884089408941三个端口;
运行在8841端口nacos服务实际上会占用884189418942三个端口;
运行在8842端口nacos服务实际上会占用884289428943三个端口。

这是生产环境中使用的 nginx反向代理nacos负载均衡的完整配置文件,仅作参考。

user  root;
worker_processes  4;
worker_cpu_affinity 0001 0010 0100 1000;
worker_rlimit_nofile 65535;

events {
    use epoll;
    worker_connections  102400;
    accept_mutex on;
    multi_accept on;
        }

http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format format1 '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $http_x_forwarded_for $upstream_cache_status $request_time';
    access_log  logs/access.log  format1;
    server_names_hash_bucket_size 128;
    client_header_buffer_size 4k;
    large_client_header_buffers 4 8k;
    client_max_body_size 50m;
    #sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    #keepalive_timeout  65;

    #gzip  on;
    keepalive_timeout  60s;
    client_header_timeout 25s;
    client_body_timeout 25s;
    send_timeout 25s;
    
    upstream nacos_cluster {
      server 192.168.100.235:8848;
      server 192.168.100.236:8848;
      server 192.168.100.237:8848;
                                           }

    server {
        listen       80;
        server_name  localhost;
        #charset utf-8;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location /nacos/ {
            proxy_pass http://nacos_cluster/nacos/;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            proxy_max_temp_file_size 0;
            proxy_connect_timeout 90;
            proxy_send_timeout 90;
            proxy_read_timeout 90;
            proxy_buffer_size 4k;
            proxy_buffers 4 32k;
            proxy_busy_buffers_size 64k;
            proxy_temp_file_write_size 64k;
            client_max_body_size 10m;
            client_body_buffer_size 128k;
                         }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
                              }
    }
}

参考文献 :https://www.csdn.net/tags/NtzaYgzsODk5NTItYmxvZwO0O0OO0O0O.html#_1

相关文章

  • nacos从单体安装到集群配置

    前置条件 下载nacos 上传nacos安装包到服务器上 持久化数据库配置 修改集群配置 配置优化点 复制集群节点...

  • Nacos - 配置管理(4.1)

    5 Nacos配置管理应用于分布式系统 5.1 从单体架构到微服务 5.1.1 单体架构 Web应用程序发展的早期...

  • Nacos集群二(集群+外挂mysql数据源)

    集群概况 目前nacos集群分布在三台服务器上,使用vip搭建方式,详情看Nacos集群官方配置,目前分别搭建在本...

  • Nacos集群配置

    提前准备 预计需要,1个Nginx+3个Nacos注册中心+1个mysql Nacos下载Linux版https:...

  • Nacos本地伪集群

    Nacos本地集群 环境为 MacOS 10.13.6、 JDK 8 Nacos集成了服务发现和配置中心,相当于整...

  • io.seata.common.exception.Framew

    学习seata,配置了从nacos读取配置 配置结构 nacos配置对应的service.vgroupMappin...

  • 2022-07-16 Springcloud基础知识(12)-

    Spring Cloud Alibaba Nacos (二) | 配置中心、集群化部署 查看内容请点击下面的链接:...

  • Docker搭建Nacos

    项目中需要使用配置中心,选来选去,最后还是决定试水Nacos。 单机部署 参考nacos官方文档 集群部署 1.创...

  • nacos 源码解析系列(六)

    集群模式下集群是如何互相感知的 前言 前面我们介绍了Nacos为什么把配置文件Dump到磁盘中,那么集群模式下: ...

  • Nacos集群 外网配置

    nacos version: 1.4.2 nginx 负载均衡 1.Nacos默认是以集群方式启动 2.Nacos...

网友评论

      本文标题:nacos从单体安装到集群配置

      本文链接:https://www.haomeiwen.com/subject/dcviprtx.html