当前位置:   article > 正文

SpringcloudAlibaba--nacos2.1.1集群手把手搭建

SpringcloudAlibaba--nacos2.1.1集群手把手搭建

前言:(有一点要注意SpringCloudAlibaba版本到了2.2.7RElEASE版本之上后服务端也至少得使用2.x以上的版本,这里使用nacos2.1.1版本)

本项目代码与笔记已存放在Gitee仓库 地址:代码,笔记

1.集群模式

官方文档: nacos集群搭建官方文档

集群部署结构图:

nacos集群部署结构图

SLB:负载均衡,通常使用nginx这个中间层来分别分发到我们的nacos服务器,分别给不同的服务器部署nacos。

2. 预备环境准备

请确保是在环境中安装使用: 各种安装方式可以查看我的其他博客的详细讲解

  1. 64 bit OS Linux/Unix/Mac,推荐使用Linux系统。 linux基础环境搭建
  2. 64 bit JDK 1.8+; linux安装jdk的两种方式
  3. Maven 3.3.x+; linux使用wget安装Maven
  4. nginx作为负载均衡 linux使用mwget安装配置nginx
  5. mysql docker 常用命令以及安装mysql
  6. 3个或3个以上Nacos节点才能构成集群。

3.Nacos Server 部署

3.1 安装nacos

下载源码编译:https://github.com/alibaba/Nacos/releases 可以用迅雷下载

这里直接在linux里使用wget下载

  • 先进入/usr/local
cd /usr/local
  • 1
  • 创建目录
mkdir nacos-2.1.1
  • 1
  • 进入目录
cd nacos-2.1.1
  • 1
  • 下载nacos
wget https://github.com/alibaba/nacos/releases/download/2.1.1/nacos-server-2.1.1.tar.gz
  • 1
  • 解压
tar -zxvf nacos-server-2.1.1.tar.gz
  • 1
  • 重命名文件夹nacos 因为要在一台虚拟机里搭建三个nacos伪集群。所以要把上面的下载解压重命名进行三次

分别重命名为nacos8870,nacos8872,nacos8874

最好不要使用连续的端口 ,不然可能出现地址已在使用报错。

mv nacos nacos8870
...
...
  • 1
  • 2
  • 3

xkTGnI.png

  • 解压完三个nacos后删除压缩包
rm -rf nacos-server-2.1.1.tar.gz
  • 1

3.2 修改application.properties的配置

  • 分别配置nacos的/conf/application.properties的配置,使用外置数据源(配置数据源为mysql,因为它的默认的数据源是内嵌的数据源,默认存在内存中的,三个进程各有各的进程,到时候服务注册会注册到各自的nacos服务器中,为了保证数据一致性,这里使用mysql数据源,需下载配置mysql5.7+)

    这里以修改8870为例子,后面再修改其他两个nacos服务配置

    cd nacos8870/conf
    vim application.properties
    
    • 1
    • 2
  
  - 修改对应的端口比如8870
  - 取消数据源注释·,修改数据源为mysql
- 数据的连接数量打开
  
  ```java
  server.port=8870
    
  spring.datasource.platform=mysql
  
  db.num=1
  ##注意改成自己的mysql用户名密码
  db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReConnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
  db.usr.0=root
  db.password.0=123456
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

xki3qK.png

3.3 创建mysql的nacos数据库

在windows版本的nacos/conf下有一个mysql的脚本 用navicat连接上我们的linux的mysql执行脚本创建数据库

xiXxot.png

xijNY6.png

3.4添加节点

  • 将conf/cluster.conf.example改为cluster.conf 。添加节点配置

  • cp cluster.conf.example cluster.conf 
    
    • 1
#编辑 cluster.conf 
vim  cluster.conf 
#ip:port 
192.168.116.100:8870
192.168.116.100:8872
192.168.116.100:8874
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

xkTDjs.png

3.5 修改bin\startup.sh)

  • 如果出现内存不足:修改脚本(bin\startup.sh)的jvm参数

  • cd /usr/local/nacos-2.1.1/nacos8870/bin
    vim startup.sh
    
    • 1
    • 2
   JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m"
  • 1

3.6 启动nacos

cd /usr/local/nacos-2.1.1/nacos8870/bin
./startup.sh
  • 1
  • 2

xkiUGd.png

  • 访问nacos8870 如果重启虚拟机后访问被拒绝可能是服务没启动,后面可以设置开机自启

xkT6H0.png

3.7 设置nacos开机自启

#查看自己的javahome
vim /etc/profile
#我的如下
export JAVA_HOME=/usr/local/jdk1.8/jdk1.8.0_333
  • 1
  • 2
  • 3
  • 4
# 编辑开机自启脚本
vim /lib/systemd/system/nacos8870.service
# 添加以下内容  注意自己的javahome和nacos的服务路径
[Unit]
Description=nacos
After=network.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/jdk1.8/jdk1.8.0_333"
# 启动后面可以加上 -m standalone/cluster 表示以单机/集群方式启动,默认为集群
ExecStart=/usr/local/nacos-2.1.1/nacos8870/bin/startup.sh
ExecReload=/usr/local/nacos-2.1.1/nacos8870/bin/shutdown.sh
ExecStop=/usr/local/nacos-2.1.1/nacos8870/bin/shutdown.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 配置完成后启动服务,执行以下命令
#重新加载服务
systemctl daemon-reload
#启用服务
systemctl enable nacos8870.service
#启动服务
systemctl start nacos8870.service
#重启虚拟机
reboot
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3.8 复制8870服务的配置文件到8872,8874

#进入包含三个安装包的目录
cd /usr/local/nacos-2.1.1

#复制application.properties 到8872
cp ./nacos8870/conf/application.properties ./nacos8872/conf/application.properties 
cp:是否覆盖"./nacos8872/conf/application.properties"? y

#复制application.properties 到8874
cp ./nacos8870/conf/application.properties ./nacos8874/conf/application.properties 
cp:是否覆盖"./nacos8874/conf/application.properties"? y

#复制集群配置文件到8872
cp ./nacos8870/conf/cluster.conf  ./nacos8872/conf/cluster.conf 

#复制集群配置文件到8874
cp ./nacos8870/conf/cluster.conf  ./nacos8874/conf/cluster.conf 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3.9 编辑application.properties 文件

vim nacos8872/conf/application.properties 
#修改端口为8872
vim nacos8874/conf/application.properties 
#修改端口为8874
  • 1
  • 2
  • 3
  • 4
  • 同理设置这两个服务的开机自启

nacos8872开机自启

# 编辑开机自启脚本
vim /lib/systemd/system/nacos8872.service
# 添加以下内容  注意自己的javahome和nacos的服务路径
[Unit]
Description=nacos
After=network.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/jdk1.8/jdk1.8.0_333"
# 启动后面可以加上 -m standalone/cluster 表示以单机/集群方式启动,默认为集群
ExecStart=/usr/local/nacos-2.1.1/nacos8872/bin/startup.sh
ExecReload=/usr/local/nacos-2.1.1/nacos8872/bin/shutdown.sh
ExecStop=/usr/local/nacos-2.1.1/nacos8872/bin/shutdown.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 配置完成后启动服务,执行以下命令
#重新加载服务
systemctl daemon-reload
#启用服务
systemctl enable nacos8872.service
#启动服务
systemctl start nacos8872.service
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

8874开机自启

# 编辑开机自启脚本
vim /lib/systemd/system/nacos8874.service
# 添加以下内容  注意自己的javahome和nacos的服务路径
[Unit]
Description=nacos
After=network.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/jdk1.8/jdk1.8.0_333"
# 启动后面可以加上 -m standalone/cluster 表示以单机/集群方式启动,默认为集群
ExecStart=/usr/local/nacos-2.1.1/nacos8874/bin/startup.sh
ExecReload=/usr/local/nacos-2.1.1/nacos8874/bin/shutdown.sh
ExecStop=/usr/local/nacos-2.1.1/nacos8874/bin/shutdown.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 配置完成后启动服务,执行以下命令
#重新加载服务
systemctl daemon-reload
#启用服务
systemctl enable nacos8874.service
#启动服务
systemctl start nacos8874.service
#重启虚拟机
reboot
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3.10 登录nacos管理平台查看节点信息

xkH1eI.png

4.nginx反向代理nacos集群配置

下面我会介绍如何在cloudalibaba框架中使用nacos集群,前面的基础框架搭建过程以及代码在我的SpringCloudAlibaba专栏有详细介绍

  • 首先我们得使用nginx负载均衡进行分发,指向我们的nacos集群

这里已经提前安装好了nginx

xEIern.png

xEIaa6.png

  • 进入默认配置文件
cd nginx/conf
  • 1
  • 打开默认配置文件
 vim nginx.conf
  • 1
  • 修改集群负载均衡配置,官方推荐,nginx方向代理,注意修改成自己的ip端口,还有nginx配置的“;”,(这里我把我安装的nginx配置端口为8089,并设置了开机自启,不会的可以参照我的文章开头推荐的环境准备进行配置)

如果访问的是虚拟机的localhost:8089/nacos 就会负载均衡访问我们的nacos集群地址http://nacoscluster/nacos/

    upstream nacoscluster {
        server 127.0.0.1:8870;
        server 127.0.0.1:8872;
        server 127.0.0.1:8874;
    }
    server {
        listen        8089;
        server_name   localhost;
        
        location /nacos/ {
            proxy_pass http://nacoscluster/nacos/;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 修改配置,保存退出,重启虚拟机

    reboot
    
    • 1

xETcUP.png

  • 配置测试成功
    xEHlwR.png

5.修改idea配置

5.1 修改SpringCloudAlibaba配置

  • 修改SpringCloudAlibaba的stock和order服务的nacos配置

xELpQO.png

xEHyff.png

  • 启动服务这时我的控制台报错,原因是我的springCloudAlibababa版本是2.2.7RELEASE,linux的nacos客户端版本是2.1.1 我尝试2.2.7RELEASEspringCloudAlibababa版本连接windows的nacos2.1.1 并不会报错但是连接linux的此版本就会报错,后来参照网上的把springCloudAlibababa版本换成了2.1.2RELEASE就没报错了。

具体的版本问题我也并不知为何,只是做了简单的测试,现在采用的版本如下

xEqcLQ.png

5.2访问linux nacos管理平台

xELkTA.png

结语:

好啦以上就是我亲自测试搭建的SpringCloudAlibaba整合nacos集群,后续的其他组件手把手整合会继续在我的专栏SpringCloudAlibaba持续更新。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/498874
推荐阅读
相关标签
  

闽ICP备14008679号