首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nacos集群部署

Nacos集群部署

作者头像
陳斯托洛夫斯記
发布于 2024-08-07 05:46:07
发布于 2024-08-07 05:46:07
18300
代码可运行
举报
文章被收录于专栏:XBDXBD
运行总次数:0
代码可运行

介绍

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
代码运行次数:0
运行
AI代码解释
复制
hostnamectl set-hostname nacos-node01
hostnamectl set-hostname nacos-node02
hostnamectl set-hostname nacos-node03

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /etc/hosts
192.168.1.101	nacos-node01
192.168.1.102	nacos-node02
192.168.1.103	nacos-node03

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
systemctl enable --now chrony

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

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

部署 Nacos

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://github.com/alibaba/nacos/releases
unzip nacos-server-2.3.1.zip -d /data/

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# nacos 默认端口是8848
vim /data/nacos/conf/cluster.conf
192.168.1.101:8848
192.168.1.102:8848
192.168.1.103:8848

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建 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
代码运行次数:0
运行
AI代码解释
复制
cd /data/nacos/bin/
./startup.sh

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://192.168.1.101:8848/nacos
用户名/密码:nacos/nacos

安装 keepalived

安装(三个节点都安装)

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

nacos-node01 配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
! 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
代码运行次数:0
运行
AI代码解释
复制
! 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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

授予权限

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chmod +x /etc/keepalived/check_nacos.sh /data/script/nacos.py

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl enable --now keepalived

通过 VIP 访问 Nacos

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
springboot整合shiro实现权限控制
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。上个月写了一个在线教育的项目用到了shiro权限控制,这几天又复盘了一下,对其进行了深入探究,来总结一下。
jiankang666
2022/05/12
4810
springboot整合shiro实现权限控制
Spring Boot(五)安全框架SpringSecurity和Shiro的集成
2. 自定义UserRealm类:用于查询用户的角色和权限信息并保存到权限管理器
HcodeBlogger
2020/07/14
9980
Springboot整合shiro框架
4. 编写前端页面 在templates目录下编写 login.html,add.html,delete.html,index.html 导入thymeleaf的dtd
JokerDJ
2023/11/27
3610
Springboot整合shiro框架
一篇文章理解Shiro
是一款主流的 Java 安全框架,不依赖任何容器,可以运行在 Java SE 和 Java EE 项目中,它的主要作用是对访问系统的用户进行身份认证、 授权、会话管理、加密等操作。
GeekLiHua
2025/01/21
1880
一篇文章理解Shiro
Springboot整合shiro_spring boot框架介绍
Shiro是一款安全框架,主要的三个类Subject、SecurityManager、Realm
全栈程序员站长
2022/10/03
3410
Springboot整合shiro_spring boot框架介绍
shiro笔记(九)springboot 项目整合shiro框架,实现的详细步骤(一步一步整合,拿上用就可以)
使用shiro框架实现登录功能,这个登录功能有记住我功能,加密密码验证功能。不同用户权限不一样,看到的东西不一样。从数据库里面查询出来的权限放到缓冲里面。
一写代码就开心
2021/08/10
5080
springboot 整合 springSecurity 和shiro
SpringSecurity 安全简介 1、在 Web 开发中,安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求,但是应该在应用开发的初期就考虑进来。如果在应用开发的后期才考虑安全的问题,就可能陷入一个两难的境地:一方面,应用存在严重的安全漏洞,无法满足用户的要求,并可能造成用户的隐私数据被攻击者窃取;另一方面,应用的基本架构已经确定,要修复安全漏洞,可能需要对系统的架构做出比较重大的调整,因而需要更多的开发时间,影响应用的发布进程。因此,从应用开发的第一天就应该把安全相关的因素考虑进来,并在整个应用的开发过程中。
kirin
2021/04/30
1.2K0
没时间直播,先来一波 Shiro 整合 Spring Boot 图文教程!
Apache Shiro 是一款 Java 安全框架,不依赖任何容器,可以运行在 Java SE 和 Java EE 项目中,它的主要作用是用来做身份认证、授权、会话管理和加密等操作。
南风
2020/07/09
5820
没时间直播,先来一波 Shiro 整合 Spring Boot 图文教程!
安全之剑:深度解析 Apache Shiro 框架原理与使用指南
在现代软件开发中,安全性一直是至关重要的一个方面。随着网络攻击和数据泄露的不断增加,我们迫切需要一种强大而灵活的安全框架来保护我们的应用。Shiro框架就是这样一把利剑,它能够轻松地集成到你的项目中,为你的应用提供可靠的安全性保护。
繁依Fanyi
2024/01/27
1.9K0
深入理解Shiro
​ Apache Shiro(发音为“shee-roh”,日语中“城堡”的意思)是一个功能强大且易于使用的 Java 安全框架,可执行身份验证、授权、加密和会话管理,可用于保护任何应用程序 -从命令行应用程序、移动应用程序到最大的 Web 和企业应用程序。
用户11097514
2024/05/30
2600
深入理解Shiro
shiro笔记(五)springboot 整合shiro框架,实现加密登录功能,并且实现remeberme功能
之前的maven项目,里面使用shiro进行验证,并且自定义了认证规则,里面我们还需要自己写ini文件,在这个ini文件里面进行shiro的配置,比如配置加密规则,配置自定义的认证规则。
一写代码就开心
2021/08/10
8450
超详细 Spring Boot 整合 Shiro 教程!
Apache Shiro 是一款 Java 安全框架,不依赖任何容器,可以运行在 Java SE 和 Java EE 项目中,它的主要作用是用来做身份认证、授权、会话管理和加密等操作。
南风
2020/06/11
28.2K1
超详细 Spring Boot 整合 Shiro 教程!
快速学习Shiro-Shiro在SpringBoot工程的应用
Apache Shiro是一个功能强大、灵活的,开源的安全框架。它可以干净利落地处理身份验证、授权、企业会话管理和加密。越来越多的企业使用Shiro作为项目的安全框架,保证项目的平稳运行。
cwl_java
2020/01/02
6420
springboot shiro权限管理「建议收藏」
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说springboot shiro权限管理「建议收藏」,希望能够帮助大家进步!!!
Java架构师必看
2022/08/14
9890
springboot shiro权限管理「建议收藏」
Shiro简介及SpringBoot集成Shiro(狂神说视频简易版)
Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环
刘大猫
2025/06/01
1050
Shiro安全框架
一个功能强大且易于使用的Java安全框架,它执行身份验证、授权、加密和会话管理。
暴躁的程序猿
2022/03/24
4320
Shiro安全框架
shiro怎么进行权限管理_MySQL权限
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说shiro怎么进行权限管理_MySQL权限,希望能够帮助大家进步!!!
Java架构师必看
2022/08/14
8.1K0
SpringBoot-09 Shiro
这里第一次创建ini文件,会让你选择,可以选择txt文件,创建成功后会提示你创下载一个ini插件:
张小驰出没
2021/04/15
4320
SpringBoot-09  Shiro
(八) SpringBoot起飞之路-整合Shiro详细教程(MyBatis、Thymeleaf)
姗姗来迟的第八篇,这一篇姑且认为 Springboot 的基础整合部分已经算结束了,或许还会写一些相关的,还有MySQL没有重新整理的,Linux相关的,以及我以前记录下来的一些坑,和常见错误,都会整理出来,因为太忙,更新会慢一些,感谢大家支持!
BWH_Steven
2020/07/15
1.1K0
(八) SpringBoot起飞之路-整合Shiro详细教程(MyBatis、Thymeleaf)
06 Spring Boot 整合Shrio
整合Shrio 整合方法 导入依赖 <!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-core --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.5.3</version> </dependency> 创建UserRealm类,继承Authoriz
shimeath
2020/07/31
3530
推荐阅读
相关推荐
springboot整合shiro实现权限控制
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档