文章目录
提前预知
为什么要做集群,有什么用?
- 其实就是为了应用的高可用,避免一台挂了,导致应用不可用
为什么要使用Ngnix?
- 因为这玩意抗揍,能支持高并发不挂机
- 其实不使用Ngnix服务器也可以,只不过没有这么抗揍
Nacos集群介绍
我们要实现的集群形式如下
:需要1个Nginx+3个nacos注册中心+1个mysql
其实做集群挺好玩的,就是有点费硬件,为了真正实现上面的集群,我们需要准备五台Linux服务器或者五个Linux虚拟机:
虚拟机IP | 安装软件 |
---|---|
192.168.1.101 | 安装Ngnix服务器 |
192.168.1.102 | 安装Nacos服务1 |
192.168.1.103 | 安装Nacos服务2 |
192.168.1.104 | 安装Nacos服务3 |
192.168.1.105 | 安装MySQL服务 |
我的硬件扛不住,我就在
一个虚拟机
上做,配置如下:
虚拟机IP | 安装软件 |
---|---|
192.168.1.101 | 安装Ngnix服务器, 安装Nacos服务1,安装Nacos服务2,安装Nacos服务3 ,安装MySQL服务 |
Nginx服务抗揍,只要这个Nginx服务不挂,下面的三个节点只要有一个活着就行,三台Nacos同时都挂机这种情况应该不常见吧!!
!
Linux虚拟机安装传送门:
Linux虚拟机安装看看这里!!!!
Linux环境要求:
- java8及其以上的JDK
- 5.6.5+的MySQL数据库
- Ngnix服务器
- Nacos注册中心
Linux中的JDK安装和配置
参考链接:
Linux系统中安装JDK
Linux系统中MySQL数据的安装和配置
参考链接:
Linux系统中安装MySQL
Linux系统中Ngnix服务器的安装和配置
参考链接:
Linux系统中安装Nginx
Linux系统中Nacos的安装和配置
Nacos下载
Nacos下载Linux版:
Github地址
Nacos安装
我一般都是将软件安装在
/usr/lib
目录下面,不同的人有不同的风格,你可以安装在别的目录下面,这个不在啰嗦!!
注意:通过Xftp向Linux系统中拖拽文件时,需要修改Linux系统中文件夹的权限
往哪个文件夹中上传文件,就要修改那个文件夹的权限
此处修改/usr/lib文件夹的权限
修改权限需要使用管理员权限:su root
修改权限,在usr目录下执行命令:chmod 777 /usr/lib
下载好之后,通过远程连接工具将下载的文件传输到Linux的
/usr/lib
目录下面:
注意:解压即安装在
/usr/lib
目录下面执行命令:
tar -zxvf nacos-server-1.4.2.tar.gz
单机版Nacos测试连接
我们刚开始使用
单机版的Nacos进行测试
,在测试之前我们先要开放Nacos的端口号:
8848
直接访问可能访问不到,因为Linux中有防火墙,下面对防火墙进行设置:
- 查看开放的端口号:firewall-cmd --list-all
- 设置开放端口号:sudo firewall-cmd --add-port=8848/tcp --permanent
- 重启防火墙:firewall-cmd --reload
现在外部就可以访问8848端口了
启动Nacos,在
/usr/lib/nacos/bin
目录下面,执行下面的命令启动:
./startup.sh -m standalone
链接测试:
访问方式为:IP+端口号
我的虚拟机IP为:192.168.1.101
所以访问链接为:http://192.168.1.101:8848/nacos/
初始的账号和密码都是:nacos
Nacos集群打造
准备阶段
集群打造其实也不难,有了上面的基础就好做了,我们在/usr/lib/目录下新建三个目录:
[root@localhost lib]# mkdir nacos1
[root@localhost lib]# mkdir nacos2
[root@localhost lib]# mkdir nacos3
将Nacos服务的压缩包分别解压到这三个目录下面:
[root@localhost lib]# tar -zxvf nacos-server-1.4.2.tar.gz -C nacos1
[root@localhost lib]# tar -zxvf nacos-server-1.4.2.tar.gz -C nacos2
[root@localhost lib]# tar -zxvf nacos-server-1.4.2.tar.gz -C nacos3
数据库准备
在集群中我们使用的持久化方案是,将数据存储到关系型数据库MySQL中(其实也只支持MySQL),我们需要先在我们的MySQL数据库中建一个名字为
nacos_config
的数据库,建表语句在
/usr/lib/nacos1/nacos/conf/
目录下面:
如何建表:
我的方法
是将这个SQL文件传输到我的Win本机,然后用
数据库可视化连接工具
,连接我的MySQL数据库,执行这个SQL文件:
执行完的结果图:
注意:
- MySQL也可以使用集群(官网也是这样建议的),我们此处没有使用
-
Nacos中本身也自带了一个嵌入式的数据库,但是如果做集群的话使用这个自带的嵌入式的数据库可能会发生数据冲突(
因为数据没有被所有节点共享
),官网中也说了可以使用自带的嵌入式数据库做集群 -
官网说明如下
:
修改Nacos的application.properties配置文件
要养成一个好习惯,就是修改配置文件的时候,先将这个配置文件备份一下,如果出错还可以重来,给自己留一条后路。
Nacos的配置文件在
/usr/lib/nacos1/nacos/conf
下面的:
application.properties
先备份:
- cp application.properties application-副本.properties
再修改:
vim application.properties
配置文件,在文件中
添加
如下内容:
-
注意:数据库的名称为
nacos_config
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=12345678
nacos1端口号为8847,nacos1端口号为8848,nacos1端口号为8849
如法炮制,修稿nacos2和nacos3的配置文件
修改Nacos的nacos的集群配置文件cluster.conf
这个配置文件在
/usr/lib/nacos1/nacos/conf
目录下,名字为:
cluster.conf.example
我们先拷贝一份:
cp cluster.conf.example cluster.conf
再修改:
vim cluster.conf
配置文件,在文件中
添加
如下内容:
- 注意:IP为虚拟机的IP,后面的端口号为我们集群中各个Nacos的端口号
192.168.1.101:8847
192.168.1.101:8848
192.168.1.101:8849
- 设置完之后,记得打开这些端口号
- 查看开放的端口号:firewall-cmd --list-all
- 设置开放端口号:sudo firewall-cmd --add-port=8847/tcp --permanent
- 重启防火墙:firewall-cmd --reload
启动方式
还记得上面演示的单机版的Nacos的启动方式吗?如下:
./startup.sh -m standalone
注意:集群的启动方式和单机版的不一样,如下,切记:
三个Nacos服务都要使用这个命令启动
分别在
/usr/lib/nacos1/nacos/bin
,
/usr/lib/nacos1=2/nacos/bin
,
/usr/lib/nacos3/nacos/bin
目录下执行下面的命令:
./startup.sh
使用Ngnix作为负载均衡器
修改nginx的配置文件:
nginx.conf
该文件的位置在:
/usr/local/nginx/conf
目录下面
先备份:
cp nginx.conf nginx-副本.conf
再修改:
upstream cluster{
server 192.168.1.101:8847;
server 192.168.1.101:8848;
server 192.168.1.101:8849;
}
- 修改完记得开放端口号:1111
- 查看开放的端口号:firewall-cmd --list-all
- 设置开放端口号:sudo firewall-cmd --add-port=1111/tcp --permanent
- 重启防火墙:firewall-cmd --reload
最后测试
截止到此处,
1个Nginx+3个nacos注册中心+1个mysql
已经配置完毕了,下面开始测试
在前面已经启动了3个nacos服务:
查看nacos进程启动数:
ps -ef | grep nacos | grep -v grep | wc -l
单独访问一下,看看实例是否都成功起来:
- http://192.168.1.101:8847/nacos/#/login
- http://192.168.1.101:8848/nacos/#/login
- http://192.168.1.101:8849/nacos/#/login
在
/usr/local/nginx/sbin/
目录下启动nginx,注意
启动的时候要指定配置文件为刚才配置的那个
!!!
./nginx -c /usr/local/nginx/conf/nginx.conf
查看nginx进程:
ps -ef|grep nginx
测试通过nginx,访问nacos:
http://192.168.1.101:1111/nacos/#/login