nacos很熟悉的伙伴应该直到nacos是集配置中心,命名服务,注册和发现于一身的组件,比其他的注册组件要方便许多,支持ap和cp.由自己的客户端向服务端请求心跳,极大的减小了服务端的压力。废话不多了,下面直接进入正题。
第一步准备环境:
一台windows机器,配置两个虚拟机或者两个linux服务器,接下来所有的操作都是在linux上完成。
1) nacos版本 我测试的是 1.2.1版本
我的nacos有3个服务,地址分别为:
192.168.1.20:8848 192.168.1.20:8849 192.168.1.20:8850
2)mysql我用的是8以上的(会有兼容性问题,需要解决)
3)openresty我用的是15.8.2版本
4)keepalived我用的是 1.3.5
第二步 安装nacos
1 解压压缩包 : unzip nacos-server-1.2.1.zip
2 修改nacos的conf中application.properties文件,修改掉默认数据库,改为mysql
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config? characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=123456
3 配置在mysql中nacos_config数据库(前提是linux中已安装mysql并可使用,没有安装的可以看看我的mysql帖子)
首先登录
mysql mysql -u root -p
输入密码
创建 nacos_config数据库
create datebase 'nacos_config';
使用数据库
use nacos_config
把nacos中的nacos-mysql.sql执行
source ../../conf/nacos-mysql.sql
在nacos的conf目录中新建cluster.conf文件,用于集群
内容为:
192.168.1.20:8848
192.168.1.20:8849
192.168.1.20:8850
这一步用于制定端口,也可以在配置文件中制fen定
分别中nacos1\nacos2\nacos3修改startup.sh启动脚本
nohub $JAVA -Dserver.port = 8848 (nacos1中)
nohub $JAVA -Dserver.port = 8849 (nacos2中)
nohub $JAVA -Dserver.port = 8850 (nacos3中)
最后分别启动 三个程序 (启动前,一定记得防火墙允许访问或关闭掉防火墙)
sh nacos1/bin/startup.sh
sh nacos2/bin/startup.sh
sh nacos3/bin/startup.sh
第三步 安装openresty
查看可用的openresty软件
yum --disablerepo="*" --enablerepo="openresty" list available
安装
yum install openresty -y
默认会安装到 /usr/local/openresty/ 目录下, 目录下包含了 luajit, lualib, nginx, openssl, pcre, zlib 这些组件
启动
/usr/local/openresty/bin/openresty
如果安装成功了 直接在本地访问80端口 会出现welcome to openresty!界面
这里要使用它的负载均衡功能 upstream(openresty是在nginx的基础上优化的产品)
这里要定位到它的nginx/conf/nginx.conf文件的http块中增加如下代码
upstream nacosCluster{
server 192.168.1.20:8848
server 192.168.1.20:8849
server 192.168.1.20:8850
}
配置location代理到nacos_cluster
location /{
proxy_pass http://nacosCluster;
index index.html index.htm;
}
修改好配置,重新载入配置文件
/usr/local/openresty/bin/openresty -s reload
到此集群已经建立好了 访问 http://192.168.1.20/nacos/index.html,80端口可以不写.
如果想测试,可以在你的nacos中修改discover.server-addr的地址为当前这个,也就是openresty的访问地址。nacos本身就支持了ribbon,可以测试负载均衡,具体不列了。
第四步 安装keepalived
我是两台虚拟机,一台虚拟机上有3个nacos服务,1个openresty服务,1个keepalived
另外一台1个openresty服务,1个keepalived服务,这台虚拟机为MASTER (keepalived)
由于另外一台我是直接克隆的第一台的机器,所以我只要安装keepalived就可以了
(防火墙一定记得权限设置,保持两台虚拟机可以ping 通)
最简单的方法 yum方式 (最好不要用手动安装依赖较多)
yum install -y keepalived
查看版本
rpm -qa|grep keepalived
查看安装后目录
rpm -qc keepalived
启动keepalived
systemctl start keepalived.service
设置开机启动
systemctl enable keepalived.service
查看开机自启列表
systemctl list-unit-files|grep enabled
查看启动状态
systemctl status keepalived.service
添加开机自启动
chkconfig --add keepalived
chkconfig keepalived on
下面是编辑两台机器的keepalived的keepalived.conf文件,里面很多内容,可以删除一些。
编写自启动openResty脚本(一定记得自测脚本)
这里两台keepalived配置的虚拟ip为192.168.1.30(MASTER机器存在,如果MASTER下线,BACKUP会占有)
keepalived默认是抢占式的,也有非抢占式的需要配置,具体小伙伴可以百度吧
最后启动服务
systemctl start keepalived.service
使用ip addr 可以查看到MASTER上有192.168.1.30的虚拟ip
第五步 测试
打开192.168.1.30/nacos/index.html 地址
可以测试一台机器挂掉,服务是否正常
可以测试openresty 停止后是否自启动
至此Nacos+OpenResty +Keepalived高可用集群结束,过程很繁琐,简单体验一下.
在此过程有许多细节就不说了。