目录
一、什么是nacos
具体内容就不巴巴了,看官网Nacos官方文档
二、Nacos作为服务中心的配置
spring:
application:
name: xiaojie-member
cloud:
nacos:
discovery:
#注册地址
server-addr: 127.0.0.1:8848
#是否开启nacos注册
enabled: true
#账号
username: xiaojie
#密码
password: nacos
#命名空间
namespace: 28eb29ea-5a04-4714-8ae8-77d37c01166a
#分组
group: DEV_GROUP
三、Nacos作为配置中心配置
spring:
cloud:
nacos:
config:
#前缀
prefix: xiaojie-member
#地址
server-addr: 127.0.0.1:8848
#扩展名
file-extension: yaml
#命名空间
namespace: 28eb29ea-5a04-4714-8ae8-77d37c01166a
#分组
group: DEV_GROUP
#开关
enabled: true
#动态刷新配置
refresh-enabled: true
四、Nacos 持久化到本地MySQL
将下载的nacos-server修改application.properties
添加如下数据库
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
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&allowPublicKeyRetrieval=true
db.user.0=root
db.password.0=root
五、Nacos集群配置
将Nacos解压后的文件复制3份,在conf文件下添加cluster.conf,内容如下
#2021-07-12T09:26:22.487
ip:8848
ip:8849
ip:8850
#一定写ip不要写localhost
修改每个配置文件的端口号,对应,然后进入bin,目录下执行
#集群方式启动
startup.cmd -m cluster
#单机模式
startup.cmd -m standalone
六、集群访问
官网推荐这种模式部署。http://nacos.com:port/openAPI 域名 + SLB模式(内网SLB,不可暴露到公网,以免带来安全风险),可读性好,而且换ip方便,推荐模式
我们按照下图部署
nginx配置如下
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream nacos_config{
#实际服务器
server 127.0.0.1:8848;
server 127.0.0.1:8849;
server 127.0.0.1:8850;
}
server {
listen 80;
#监听域名
server_name nacos.xiaojie.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://nacos_config;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
由于是在自己的环境测试用的,需要修改host文件添加如下
127.0.0.1 nacos.xiaojie.com
然后访问nacos.xiaojie.com 即可。
七、Lvs+Keepalived实现集群高可用
访问变成这种模式
7.1、安装Keepalived
下载安装包上传服务器,然后解压
[root@localhost local]# tar -zxvf keepalived-2.2.2.tar.gz -C /usr/local/
下载插件openssl
[root@localhost local]# yum install openssl openssl-devel -y
编译
[root@localhost keepalived-2.2.2]# cd keepalived-2.2.2/ && ./configure --prefix=/usr/local/keepalived
安装
[root@localhost keepalived-2.2.2]# make && make install
7.2、设置为开机启动
#创建文件
[root@bogon keepalived-2.2.2]# mkdir /etc/keepalived
#复制配置文件
[root@bogon keepalived-2.2.2]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived
[root@bogon keepalived-2.2.2]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@bogon keepalived-2.2.2]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
#设置开机启动
[root@localhost etc]# systemctl enable keepalived.service
#启动
[root@localhost keepalived]# systemctl start keepalived.service
停止
[root@localhost keepalived]# systemctl stop keepalived.service
7.3、修改配置文件内容如下
[root@bogon keepalived-2.2.1]# cd /etc/keepalived/
! Configuration File for keepalived
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" #运行脚本
interval 2 #检测时间间隔
weight -20 #如果条件成立的话,则权重 -20
}
# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
###MASTER 主的意思 BACKUP 从
state MASTER #来决定主从
interface ens32 # 绑定虚拟 IP 的网络接口
virtual_router_id 110 # 虚拟路由的 ID 号, 两个节点设置必须一样
mcast_src_ip 192.168.139.153 #填写本机ip
priority 100 # 节点优先级,主要比从节点优先级高
nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int 1 # 主从信息发送间隔,两个节点设置必须一样,默认 1s
authentication {
auth_type PASS
auth_pass 1111
}
# 将 track_script 块加入 instance 配置块
track_script {
chk_nginx #执行 Nginx 监控的服务
}
virtual_ipaddress {
192.168.139.110 # 虚拟ip,可配置多个。
}
}
启动keepalived 看到如下多了个ip,配置成功
重启nginx 的脚本
#授权脚本文件
chmod +x /etc/keepalived/nginx_check.sh
#!/bin/bash
set -x
COUNT=$(ps -C nginx --no-header |wc -l)
echo $COUNT
#判断Nginx 是否都挂掉了
if [ $COUNT -eq 0 ]
then
#如果挂掉了,就启动nginx
#/usr/local/nginx/sbin/nginx
docker start mynginx
echo "重启nginx"
#等2秒钟后,再次查看是否 启动成功
sleep 2
#如果nginx没有启动起来,就直接干掉keepalived
COUNT=$(ps -C nginx --no-header |wc -l)
if [ $COUNT -eq 0 ]
then
echo "干掉keepalived"
#如果killall命令不能使用,就需要安装psmisc工具了
#yum install -y psmisc
killall keepalived
fi
fi
参考Nginx之Keepalived实现高可用(双机热备+自动切换)-yellowcong_yelllowcong的专栏-CSDN博客_nginx 热切换
备用服务器跟这个几乎相同,只需要修改备用服务器的配置文件
! Configuration File for keepalived
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" #运行脚本
interval 2 #检测时间间隔
weight -20 #如果条件成立的话,则权重 -20
}
# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
###MASTER 主的意思 BACKUP 从
state BACKUP #来决定主从
interface ens32 # 绑定虚拟 IP 的网络接口
virtual_router_id 110 # 虚拟路由的 ID 号, 两个节点设置必须一样
mcast_src_ip 192.168.6.135 #填写本机ip
priority 100 # 节点优先级,主要比从节点优先级高
nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int 1 # 主备信息发送间隔,两个节点设置必须一样,默认 1s
authentication {
auth_type PASS
auth_pass 1111
}
# 将 track_script 块加入 instance 配置块
track_script {
chk_nginx #执行 Nginx 监控的服务
}
virtual_ipaddress {
192.168.6.100 # 虚拟ip,可配置多个。
}
}
然后绑定host 访问域名
八、Linux 配置开机启动
1、新增文件
vim /lib/systemd/system/nacos.service
内容如下
[Unit]
Description=nacos
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nacos/bin/startup.sh #自己的nacos启动目录
ExecReload=/usr/local/nacos/bin/shutdown.sh
ExecStop=/usr/local/nacos/bin/shutdown.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
2、开机启动
systemctl daemon-reload
systemctl enable nacos.service
systemctl start nacos.service
3、配置java_home 路径,修改启动脚本startup.sh
最后附上 测试代码 nacos: nacos分布式配置中心