前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nacos集群部署

Nacos集群部署

作者头像
陳斯托洛夫斯記
发布2024-08-07 13:46:07
1240
发布2024-08-07 13:46:07
举报
文章被收录于专栏:XBD

介绍

Nacos 用于配置、管理微服务,提供了一组简单易用的特性,快速实现服务发现、服务配置、服务元数据及流量管理。

环境

主机名

服务器IP

组件

nacos-node01

192.168.1.101、192.168.1.100(VIP)

nacos、jdk、mysql、keepalived

nacos-node02

192.168.1.102

nacos、jdk、mysql、keepalived

nacos-node03

192.168.1.103

nacos、jdk、mysql、keepalived

初始化环境

配置主机名(三个节点都配置)

代码语言:javascript
复制
hostnamectl set-hostname nacos-node01
hostnamectl set-hostname nacos-node02
hostnamectl set-hostname nacos-node03

配置主机名解析(三个节点都配置)

代码语言:javascript
复制
vim /etc/hosts
192.168.1.101	nacos-node01
192.168.1.102	nacos-node02
192.168.1.103	nacos-node03

配置免密登录(三个节点都配置)

代码语言:javascript
复制
ssh-keygen -t rsa
ssh-copy-id 192.168.1.101
ssh-copy-id 192.168.1.102
ssh-copy-id 192.168.1.103

安装依赖(三个节点都配置)

代码语言:javascript
复制
yum -y install gcc gcc-c++ libaio make cmake zlib-devel openssl-devel pcre pcre-devel wget git curl lynx lftp mailx mutt rsync ntp net-tools vim lrzsz screen sysstat yum-plugin-security yum-utils createrepo bash-completion zip unzip bzip2 tree tmpwatch pinfo man-pages lshw pciutils gdisk system-storage-manager git  gdbm-devel sqlite-devel chrony

配置时间同步(所有节点都配置)

代码语言:javascript
复制
systemctl enable --now chrony

所有节点安装jdk(所有节点都安装)

部署 MySQL(三个节点都要部署,部署成一主两从)

部署 Nacos

下载、解压 Nacos(所有节点都安装)

代码语言:javascript
复制
https://github.com/alibaba/nacos/releases
unzip nacos-server-2.3.1.zip -d /data/

修改配置(所有节点都要配置)

代码语言:javascript
复制
# nacos 默认端口是8848
vim /data/nacos/conf/cluster.conf
192.168.1.101:8848
192.168.1.102:8848
192.168.1.103:8848

数据源配置(所有节点都要配置)

代码语言:javascript
复制
# 创建 Nacos 连接用户和数据库,在主库执行

# 导入数据
use nacos;
source /data/nacos/conf/nacos-mysql.sql;

# 所有 Nacos 节点修改 Nacos 连接数据库的配置文件
vim /data/nacos/conf/application.properties
Spring.datasource.platform=mysql		# MySQL 作为外部连接数据库
db.num=3								# 数据库实例数
db.url.0=								# 多个数据库实例
db.url.1=								# 多个数据库实例
db.url.2=								# 多个数据库实例
db.user=nacos							# 数据库账号
db.passsowrd=123456						# 数据库密码

启动 Nacos(所有节点都要配置)

代码语言:javascript
复制
cd /data/nacos/bin/
./startup.sh

访问 Nacos(所有节点都要配置)

代码语言:javascript
复制
http://192.168.1.101:8848/nacos
用户名/密码:nacos/nacos

安装 keepalived

安装(三个节点都安装)

修改配置(三个节点都配置)

nacos-node01 配置:

代码语言:javascript
复制
vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
 
global_defs {
   notification_email_from xxx@qq.com
   smtp_server smtp.qq.com
   smtp_connect_timeout 30
   router_id nacos-node01		# 唯一值,一般为所在服务器主机名
   vrrp_skip_check_adv_addr
   # vrrp_strict         		# 注释该参数
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
#注意此处添加nacos服务健康检查
vrrp_script check_nacos {
    script "/bin/bash /etc/keepalived/check_nacos.sh"	# nacos健康检查脚本路径
    interval 5		# 健康检查周期,每隔5秒执行一次脚本     
}
 
vrrp_instance VI_1 {
state MASTER
    interface ens33				# 绑定的网卡名称
    virtual_router_id 51		# 主备ID必须保证一致
    priority 100				# 优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
	    192.168.1.100/24		# VIP地址,虚拟IP
    }
    track_script {   			# 调用脚本
       check_nacos   			# 这里的名称必须与vrrp_scrip写的保证一致
    }
}

nacos-node02 配置:

代码语言:javascript
复制
! Configuration File for keepalived
 
global_defs {
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id nacos-node2
   vrrp_skip_check_adv_addr
   # vrrp_strict      
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
 
vrrp_script check_nacos {
    script "/bin/bash /etc/keepalived/check_nacos.sh"
    interval 5
}
 
vrrp_instance VI_1 {
state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
	192.168.1.100/24
    }
    track_script {
       check_nacos
    }
}

nacos-node03 配置:

代码语言:javascript
复制
! Configuration File for keepalived
 
global_defs {
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id nacos-node3
   vrrp_skip_check_adv_addr
   # vrrp_strict      
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
 
vrrp_script check_nacos {
    script "/bin/bash /etc/keepalived/check_nacos.sh"
    interval 5
}
 
vrrp_instance VI_1 {
state BACKUP
    interface ens33
    virtual_router_id 51
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
	192.168.1.100/24
    }
    track_script {
       check_nacos
    }
}

健康检查脚本(三个节点都配置)

代码语言:javascript
复制
vim /etc/keepalived/check_nacos.sh

#!/bin/bash
network=`ifconfig ens33 |grep -w inet |awk '{print $2}'`
nacos=`netstat -tnlp|grep 8848|wc -l`
if [ "$nacos" -eq 0 ];then
    #这里调用消息通知脚本,并配置需要发送的消息
    /data/script/nacos.py "主机:$(hostname)--主机IP:$network:nacos服务心跳检测异常,>>> 请登入服务器查看;VIP已切换,请注意"
    systemctl stop keepalived.service
fi

消息推送脚本

代码语言:javascript
复制
vim /data/script/nacos.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
 
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "企业微信机器人或者钉钉机器人的webhook地址"
def msg(text):
    json_text= {
     "msgtype": "text",
        "text": {
            "content": text
        },
    }
    print requests.post(api_url,json.dumps(json_text),headers=headers).content
 
if __name__ == '__main__':
    text = sys.argv[1]
msg(text)

安装 pip 和 requests 模块(所有节点都安装)

代码语言:javascript
复制
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

授予权限

代码语言:javascript
复制
chmod +x /etc/keepalived/check_nacos.sh /data/script/nacos.py

启动 keepalived 服务(所有节点都启动)

代码语言:javascript
复制
systemctl enable --now keepalived

通过 VIP 访问 Nacos

代码语言:javascript
复制
http://192.168.1.100:8848/nacos
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-182,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 环境
  • 初始化环境
  • 部署 MySQL(三个节点都要部署,部署成一主两从)
  • 部署 Nacos
  • 安装 keepalived
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档