keepalived+jumpserver+mysql主从复制+sersync+邮件通知,实现jumpserver双机热备


前言

资源有限,没法实现应用服务器和存储服务器分离,没法进行高大上的配置,考虑到可能会出现脑裂的情况,也没使用负载均衡,就两台设备,于是就萌生了这个想法,使得一台设备宕机,另一台能实时接管,并且数据同步,故障服务器向管理员发送通知,并告知故障原因,同时宕机设备恢复时又能继续工作。


提示:以下是本篇文章正文内容,下面案例可供参考

一、准备工作

服务器 IP 版本号
ServerA 192.168.1.100 Ubuntu 20.04.3
ServerB 192.168.1.101 Ubuntu 20.04.3
VIP 192.168.1.200
使用de工具
工具 版本号
-------- -----
keepalived v2.0.19
jumpserver v2.12.2
mysql 8.0.26
sersync
email

PS:为保证网络畅通,本文默认已关闭防火墙、selinux。

二、拓扑图

jumpserver双机热备拓扑图

三、实现

1.修改 IP地址

server1:
打开配置文件:

root@tjsc:~#vim /etc/netplan/00-installer-config.yaml

配置文件:

network:
  ethernets:
    ens33:     #配置的网卡的名称
      addresses: [192.168.1.100/24]    #配置的静态ip地址和掩码
      dhcp4: no    #关闭DHCP,如果需要打开DHCP则写yes
      optional: true
      gateway4: 192.168.1.1    #网关地址
      nameservers:
         addresses: [192.168.1.1,114.114.114.114]    #DNS服务器地址,多个DNS服务器地址需要用英文逗号分隔开
  version: 2
  renderer: networkd  

server2:
server2同server1只是需要将192.168.1.100改为192.168.1.101
修改好后,执行

root@tjsc:~# sudo netplan apply

检查配置是否正确,执行

root@tjsc:~# ip addr
#输出结果
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:a8:73:8a brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fea8:738a/64 scope link 
       valid_lft forever preferred_lft forever

ps:注意网卡名称,不要照抄。

2.安装mysql

sever1和server2:

  1. apt安装mysql(使用的阿里源)
root@tjsc:~#apt install -y mysql-server
  1. 初始化mysql
root@tjsc:~#sudo mysql_secure_installation

配置项

#1
VALIDATE PASSWORD PLUGIN can be used to test passwords...
Press y|Y for Yes, any other key for No: N (我的选项)

#2
Please set the password for root here...(输入root用户密码)
New password: (输入密码)
Re-enter new password: (重复输入)

#3
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them...
Remove anonymous users? (Press y|Y for Yes, any other key for No) : N (我的选项)(移除匿名用户)

#4
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network...(设置是否只允许本地登录)
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y (我的选项)

#5
By default, MySQL comes with a database named 'test' that
anyone can access...
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : N (我的选项)

#6
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y (我的选项)

  1. 检查mysql服务状态
root@tjsc:~#systemctl status mysql.service
#显示结果
● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-08-17 06:55:32 UTC; 27min ago
   Main PID: 3310 (mysqld)
     Status: "Server is operational"
      Tasks: 39 (limit: 2245)
     Memory: 355.0M
     CGroup: /system.slice/mysql.service
             └─3310 /usr/sbin/mysqld

Aug 17 06:55:32 tjsc systemd[1]: Starting MySQL Community Server...
Aug 17 06:55:32 tjsc systemd[1]: Started MySQL Community Server.

3.安装jumpserver

sever1和server2:

  1. 手动部署jumpserver
cd /opt #进入opt目录
wget https://github.com/jumpserver/installer/releases/download/v2.12.2/jumpserver-installer-v2.12.2.tar.gz #下载安装包
tar -xf jumpserver-installer-v2.12.2.tar.gz #解压安装包
cd jumpserver-installer-v2.12.2 #进入安装目录
root@tjsc:/opt/jumpserver-installer-v2.12.2#./jmsctl.sh install  #启动jumpserver安装脚本

过一会会有配置项:

2. Configure Docker
Do you need custom docker root dir, will use the default directory /var/lib/docker? (y/n)  (default n): (默认即可)
1. Configure Network(是否支持IPV6)
Do you want to support IPv6? (y/n)  (default n):
3. Configure Persistent Directory(设置配置文件目录,一般默认)
Do you need custom persistent store, will use the default directory /opt/jumpserver? (y/n)  (default n)
4. Configure MySQL
Do you want to use external MySQL? (y/n)  (default y): #(使用刚才安装的mysql,所以一定要选y)
Please enter MySQL server IP (default 192.168.1.100): #(本地IP地址,可以为localhost)
Please enter MySQL server port (default 3306): #(端口)
Please enter MySQL database name (default jumpserver): #(jumpserver的数据库,需要事先创建好)
Please enter MySQL username (default root): #(使用的连接数据库的账号)
Please enter MySQL password (default ): #(数据库密码)
#其余选项默认即可

ps:

创建数据库 mysql> create database jumpserver;
创建用户 mysql>create user 'admin' @'%' identified with mysql_native_password by 'xxxxxxx.';
修改用户权限:mysql>GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Keepalived是一种高可用解决方案,可用于将多台服务器组成一个虚拟IP地址,实现故障转移和负载均衡。当一台服务器出现故障时,Keepalived可以将虚拟IP地址迁移到其他健康服务器上,确保服务的持续可用性。 Jumpserver是一种堡垒机工具,用于管理和控制服务器的访问权限。它可以集中管理所有服务器的账户和密码,并提供基于角色的访问控制,以确保服务器的安全性。 MySQL主从复制是一种数据库同步机制,用于实现主数据库和从数据库之间的数据同步。主数据库负责写入数据,从数据库负责读取数据。当主数据库发生变更时,从数据库会自动同步数据,确保两个数据库的数据一致性。 Sersync是一种文件同步工具,可实现服务器之间的文件增量复制。当源服务器上的文件发生变更时,Sersync会自动检测并将变更的文件同步到目标服务器上,实现文件的实时备份和同步。 邮件通知是一种用于发送邮件通知的功能。可以通过配置邮件服务器的相关参数,将系统中的重要事件、错误信息等发送到指定的邮箱,以便及时的获得系统的运行状态和异常情况。 综上所述,通过将KeepalivedJumpserverMySQL主从复制Sersync邮件通知结合起来,可以实现在服务器集群中的故障转移和负载均衡、安全控制访问权限、数据库数据同步、文件备份和同步以及及时获取系统运行和异常情况的邮件通知

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天骄书虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值