keepalived实现Tomcat服务和MySQl双机热备
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了keepalived实现Tomcat服务和MySQl双机热备,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含21995字,纯文字阅读大概需要32分钟。
内容图文
keepalived实现Tomcat服务和MySQl双机热备
1. 规划
1.1服务器环境规划
负载服务器master及WEB服务器1真实IP:192.168.20.151
负载服务器backup及WEB服务器2真实IP:192.168.20.152
负载服务器虚拟ip:192.168.20.110
1.2 软件环境规划
操作系统:Red Hat Enterprise Linux Server release 5.6 (Tikanga)
keepalived:keepalived-1.2.19
Java:jdk-1.7.0_79
Tomcat:apache-tomcat-7.0.64
2.1 安装keepalived
安装位置:/usr/local/ cd /usr/local/
wget http://www.keepalived.org/software/keepalived-1.2.19.tar.gz
[~]tar -zxvf keepalived-1.2.19.tar.gz
[~] cd keepalived-1.2.19
[keepalived-1.2.19] ./configure --prefix=/usr/local/keepalived --disable-fwmark
#(如果直接输入./configure有可能报错:configure:error: No SO_MARK declaration in headers)
[keepalived-1.2.19] make
[keepalived-1.2.19] make install
2.2 配置keepalived服务
[keepalived-1.2.19] cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
[keepalived-1.2.19] cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[keepalived-1.2.19] cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[keepalived-1.2.19] mkdir /etc/keepalived
[keepalived-1.2.19] cp /usr/local/keepalived/etc/keepalived/keepalived.conf/etc/keepalived/
[keepalived-1.2.19] chkconfig --add keepalived
[keepalived-1.2.19] chkconfig keepalived on
2.3 配置keepalived.conf文件
[~]mv /etc/keepalived/keepalived.conf/etc/keepalived/keepalived.conf.bak
[~]vi /etc/keepalived/keepalived.conf
主备机的keepalived.conf文件大致相同,只是注意红色标注的地方。
主机配置:
global_defs {
router_id NodeA
}
vrrp_script chk_http_port {
script "/opt/tomcat.pid"
interval 5
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 52
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.20.110
}
}
备机配置:
global_defs {
router_id NodeB
}
vrrp_script chk_http_port {
script "/opt/tomcat.pid"
interval 5
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.20.110
}
}
linux添加tomcat服务
在/etc/init.d中输入 sudo vim tomcat
脚本具体内容如下:
#!/bin/bash
#chkconfig: 2345 10 90
#description: Starts and Stops the tomcatdaemon
#edited by ZZH: 2015-10-14
CATALINA_HOME=/users/shr/apache-tomcat-7.0.64
JAVA_HOME=/users/shr/util/JavaDir/jdk
export CATALINA_HOME
export JAVA_HOME
start_tomcat=$CATALINA_HOME/bin/startup.sh
stop_tomcat=$CATALINA_HOME/bin/shutdown.sh
if [ ! -f $CATALINA_HOME/bin/catalina.sh ]
then
echo"===Tomcat is not available.==="
exit
fi
start()
{
echo-n "===Starting tomcat===:"
${start_tomcat}
echo"===tomcat start ok.==="
}
stop()
{
echo-n "===Shutting down tomcat===:"
${stop_tomcat}
echo"===tomcat stop ok.==="
}
status()
{
ps ax --width=1000 | grep"org.apache.catalina.startup.Bootstrap start" | grep -v"grep" | awk '{printf $1 " "}' | wc | awk '{print $2}'> tomcat_process_count.txt
readline < tomcat_process_count.txt
rmtomcat_process_count.txt
if[ $line -gt 0 ]
then
echo-n "tomcat ( pid = "
ps ax --width=1000 | grep"org.apache.catalina.startup.Bootstrap start" | grep -v"grep" | awk '{printf $1 " "}' | awk '{print $1}'> tomcat_process_pid.txt
readpid < tomcat_process_pid.txt
rmtomcat_process_pid.txt
echo-n $pid
echo-n ") is running..."
echo
else
echo"tomcat is stopped"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep1
start
;;
status)
status
;;
*)
echo"Usage:$0 {start|stop|restart}"
exit1
esac
exit 0
# shell end.
在终端输入:
sudo chmod 755 tomcat
sudo chkconfig --add tomcat
启动/关闭/重启/查看状态 tomcat
tomcat 启动 service tomcatstart
tomcat 关闭 service tomcatstop
tomcat 重启 service tomcatrestart
tomcat状态查看 service tomcatstatus
2.4配置/opt/tomcat.pid
#!/bin/bash
#description: check tomcat service anddecide whether stop the keepalived or not
#edited by zzh: 2015-10-14
CATALINA_HOME=/users/shr/apache-tomcat-7.0.64
JAVA_HOME=/users/shr/util/JavaDir/jdk
export CATALINA_HOME
export JAVA_HOME
ps ax --width=1000 | grep"org.apache.catalina.startup.Bootstrap start" | grep -v"grep" | awk '{printf $1 " "}' | wc | awk '{print $2}' >tomcat_process_count.txt
read line < tomcat_process_count.txt
start_tomcat=$CATALINA_HOME/bin/startup.sh
if [ ${line} -lt 1 ]
then
echo -n "===Starting tomcat===:"
${start_tomcat}
# :sudo service tomcat start
echo "===tomcat start ok.==="
sleep 3
# check the tomcat status.
ps ax --width=1000 | grep "org.apache.catalina.startup.Bootstrapstart" | grep -v "grep" | awk '{printf $1 " "}' | wc |awk '{print $2}' > tomcat_process_count.txt
read line2 < tomcat_process_count.txt
if [ ${line2} -lt 1 ]
then
sudo service keepalived stop
fi
fi
rm tomcat_process_count.txt
#shell end.
重启\启动\关闭\查看状态keepalived
重启\启动\关闭\查看状态keepalived
service keepalived restart
service keepalived start
service keepalived stop
service keepalived status
2.3 配置keepalived.conf文件
启动后查看日志:
tail -f /var/log/messages
(MASTER:192.168.20.151)
Sep 29 15:49:16 shr Keepalived[5536]:Starting Keepalived v1.2.19 (09/21,2015)
Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Netlink reflector reports IP 192.168.20.151added
Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Netlink reflector reports IP 192.168.20.151added
Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Registering Kernel netlink reflector
Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Registering Kernel netlink command channel
Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Opening file'/etc/keepalived/keepalived.conf'.
Sep 29 15:49:16 shrKeepalived_healthcheckers[5538]: Configuration is using : 6572 Bytes
Sep 29 15:49:16 shr Keepalived[5537]:Starting Healthcheck child process, pid=5538
Sep 29 15:49:16 shr Keepalived_healthcheckers[5538]:Using LinkWatch kernel netlink reflector...
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Netlink reflector reports IP 192.168.20.151 added
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Netlink reflector reports IP 192.168.20.151 added
Sep 29 15:49:16 shr Keepalived[5537]:Starting VRRP child process, pid=5539
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Registering Kernel netlink reflector
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Registering Kernel netlink command channel
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Registering gratuitous ARP shared channel
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Opening file '/etc/keepalived/keepalived.conf'.
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Configuration is using : 36541 Bytes
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:Using LinkWatch kernel netlink reflector...
Sep 29 15:49:16 shr Keepalived_vrrp[5539]:VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
Sep 29 15:49:17 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) Transition to MASTER STATE
Sep 29 15:49:17 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) Received lower prio advert, forcing new election
Sep 29 15:49:18 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) Entering MASTER STATE
Sep 29 15:49:18 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) setting protocol VIPs.
Sep 29 15:49:18 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.10.195.212
Sep 29 15:49:18 shr Keepalived_vrrp[5539]:Netlink reflector reports IP 10.10.195.212 added
Sep 29 15:49:18 shrKeepalived_healthcheckers[5538]: Netlink reflector reports IP 10.10.195.212added
Sep 29 15:49:23 shr Keepalived_vrrp[5539]:VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.10.195.212
(BACKUP:192.168.20.152)
Sep 29 15:46:25 server1 Keepalived[18218]:Starting Keepalived v1.2.19 (09/25,2015)
Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Netlink reflector reports IP 192.168.20.152added
Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Netlink reflector reports IP 192.168.20.152added
Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Registering Kernel netlink reflector
Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Registering Kernel netlink command channel
Sep 29 15:46:25 server1 Keepalived_healthcheckers[18220]:Opening file '/etc/keepalived/keepalived.conf'.
Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Configuration is using : 6682 Bytes
Sep 29 15:46:25 server1 Keepalived[18219]:Starting Healthcheck child process, pid=18220
Sep 29 15:46:25 server1 Keepalived[18219]:Starting VRRP child process, pid=18221
Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Netlink reflector reports IP 192.168.20.152 added
Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Netlink reflector reports IP 192.168.20.152 added
Sep 29 15:46:25 server1Keepalived_healthcheckers[18220]: Using LinkWatch kernel netlink reflector...
Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Registering Kernel netlink reflector
Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Registering Kernel netlink command channel
Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Registering gratuitous ARP shared channel
Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Opening file '/etc/keepalived/keepalived.conf'.
Sep 29 15:46:25 server1 Keepalived_vrrp[18221]:Configuration is using : 36651 Bytes
Sep 29 15:46:25 server1Keepalived_vrrp[18221]: Using LinkWatch kernel netlink reflector...
Sep 29 15:46:25 server1Keepalived_vrrp[18221]: VRRP_Instance(VI_1) Entering BACKUP STATE
Sep 29 15:46:25 server1 Keepalived_vrrp[18221]:VRRP sockpool: [ifindex(2), proto(112), uni
3.2 主备切换
l 当在主机(MASTER:192.168.20.151)中输入 service keepalived stop,此时就会进行主备切换,主机切换成备机。
主机(MASTER:192.168.20.151)输出如下
Oct 14 13:25:09 shr Keepalived_vrrp[26683]:VRRP_Instance(VI_1) sending 0 priority
Oct 14 13:25:09 shr Keepalived_vrrp[26683]:VRRP_Instance(VI_1) removing protocol VIPs.
Oct 14 13:25:09 shrKeepalived_healthcheckers[26682]: Netlink reflector reports IP 192.168.20.110 removed
Oct 14 13:25:09 shr Keepalived[26681]:Stopping Keepalived v1.2.19 (09/21,2015)
备机(BACKUP:192.168.20.152)输出如下
Oct 14 13:19:58 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Transition to MASTER STATE
Oct 14 13:19:59 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Entering MASTER STATE
Oct 14 13:19:59 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) setting protocol VIPs.
Oct 14 13:19:59 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for10.10.195.212
Oct 14 13:19:59 server1 Keepalived_healthcheckers[30889]:Netlink reflector reports IP 192.168.20.110 added
Oct 14 13:19:59 server1Keepalived_vrrp[30890]: Netlink reflector reports IP 192.168.20.110 added
Oct 14 13:20:04 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for192.168.20.110
l 当在主机(MASTER:192.168.20.151)中输入 service keepalived start,此时就会切换成主机。备机(BACKUP:192.168.20.152)输出如下信息:
Oct 14 13:25:11 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Received higher prio advert
Oct 14 13:25:11 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) Entering BACKUP STATE
Oct 14 13:25:11 server1Keepalived_vrrp[30890]: VRRP_Instance(VI_1) removing protocol VIPs.
Oct 14 13:25:11 server1Keepalived_healthcheckers[30889]: Netlink reflector reports IP 10.10.195.212removed
Oct 14 13:25:11 server1Keepalived_vrrp[30890]: Netlink reflector reports IP 192.168.20.110 removed
4. 查看虚拟ip
可以通过ip add show命令查看添加的虚拟ip:
[shr@shr bin]$ip add show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:6b:f2:a8 brd ff:ff:ff:ff:ff:ff
inet 10.10.195.53/24 brd 10.10.195.255 scope global eth0
inet 10.10.195.212/32scope global eth0
mysql双机热备以及使用keepalived实现mysql双主高可用
mysql双机热备的方式有两种:
- 主-从服务器双机热备
- 主-主服务器双机热备
下文以主-主服务器双机热备为例,主-从配置类似。
两台centos7,ip分别为:
172.17.1.136
172.17.3.134
一、安装mysql
本步骤两台主机都要执行一遍。两台主机都要安装,mysql安装见《CentOS7安装mysql8.0.12》或自行搜索。
安装完成后使用命令登录,密码为自己配置的密码:
mysql -uroot -p
创建一个测试数据库:
CREATE DATABASE `test`;
使用test库(use test;)创建一个测试空表:
create table tb_mobile( mobile VARCHAR(20) comment'手机号码', time timestamp DEFAULT now() comment'时间' );
注意:网上资料中提到 配置之前要保证两个mysql数据一致,但因为本次配置两台mysql都为全新安装,因此未测试。
二、服务器配置
1.创建同步用户
使用mysql库,
use mysql
然后分别为另一主机创建一个链接用户,该帐户必须授予REPLICATION SLAVE权限,因为mysql8在授权语句中不能出现IDENTIFIED BY ‘password’;,因此创建用户和授予权限需要分开执行:
1) 在136上执行创建用户并赋权:
CREATE USER 'replicate'@'172.17.3.134' IDENTIFIED WITH 'mysql_native_password' BY 'TestBicon@123';
因为mysql8的权限验证机制改变,因此在使用下面的命令创建用户时会有异常提示
create user 'replicate'@'172.17.3.134' identified by 'TestBicon@123';
GRANT REPLICATION SLAVE ON *.* TO 'replicate'@'172.17.3.134';
2) 在134上执行:
CREATE USER 'replicate'@'172.17.1.136' IDENTIFIED WITH 'mysql_native_password' BY 'TestBicon@123';
GRANT REPLICATION SLAVE ON *.* TO 'replicate'@'172.17.1.136';
【注意】对用户做了权限变更之后,一定记得重新加载一下权限,将权限信息从内存中写入数据库。
flush privileges;
创建完成后我们可以通过使用对方主机对本机数据库进行访问,看下是否能链接成功【注意:链接对方主机时需要先退出本机mysql或者打开新的终端】:
?
mysql -h172.17.3.134 -ureplicate -pTestBicon@123
mysql -h172.17.1.136 -ureplicate -pTestBicon@123
如果登录成功,则可以对两台服务器进行双机热备操作。
-
如果登录成功,则可以对两台服务器进行双机热备操作。
2.修改mysql配置文件
安装mysql后会在/etc/目录下生成一个my.cnf配置文件(如果没有可以从/usr/share/mysql目录下复制一份:cp /usr/share/mysql/my-medium.cnf /etc/my.cnf),找到配置文件后编辑(vim /etc/my.cnf),在[mysqld]中添加(修改)如下内容:
1)172.17.1.136主机
server-id=1 # 唯一id
innodb_flush_log_at_trx_commit=2 # 默认为1
log-bin=mysql-bin-1 #binlog日志文件名(可以任意命名)
#binlog-do-db=test # 记录日志的数据库(如果没有此项,表示同步所有的库)
binlog-ignore-db=mysql,information_schema,performance_schema,sys # 不记录日志的数据库
sync_binlog=1 #开启binlog日志同步功能
slave_skip_errors=1146 # 跳过1146错误
2)172.17.3.134主机
server-id=2 # 唯一id
innodb_flush_log_at_trx_commit=2 # 默认为1
log-bin=mysql-bin-2 #binlog日志文件名(可以任意命名)
#binlog-do-db=test # 记录日志的数据库
binlog-ignore-db=mysql,information_schema,performance_schema,sys # 不记录日志的数据库
sync_binlog=1 #开启binlog日志同步功能
slave_skip_errors=1146 # 跳过1146错误
三、重启并配置同步
1.重启两台主机上的mysql
两台主机分别执行:
systemctl restart mysqld
或者
service mysqld restart
2.查看两个服务器作为主服务器的状态
show master status\G
3.用change mster 语句指定同步位置
进入mysql操作界面(mysql -uroot -p),先执行如下指令:
unlock tables;
否则在执行stop slave;时会报如下异常:ERROR 1192 (HY000): Can't execute the given command because you have active locked tables or an active transaction。
1)172.17.1.136主机
先停步slave服务线程,这个是很重要的,如果不这样做会造成以下操作不成功。
stop slave;
然后:
change master to
master_host='172.17.3.134',master_user='replicate',master_password='TestBicon@123',
master_log_file='mysql-bin-2.000001',master_log_pos=749;
分别在服务器上重启从服务线程:
start slave;
)172.17.3.134主机
先停步slave服务线程,这个是很重要的,如果不这样做会造成以下操作不成功。
stop slave;
然后:
change master to
master_host='172.17.1.136',master_user='replicate',master_password='TestBicon@123',
master_log_file='mysql-bin-1.000001',master_log_pos=749;
-
分别在服务器上重启从服务线程:
start slave;
4.查看从服务器状态
show slave status\G
如果如下两项状态为yes则说明配置成功:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
四、验证
在两台主机的mysql中插入/删除数据等操作,另一台会自动将操作同步。
五、配置keepalived实现mysql双主高可用
上面的配置已经可以实现mysql双击热备,两台主机分别对外提供服务,如果服务链接某一台主机mysql故障,不能自动切换到另一台主机实现高可用,如果此可以满足需要或者不用切换,则可以不继续进行配置。下面将配置keepalived实现其高可用。
修改配置文件:
vim /etc/keepalived/keepalived.conf
以下是配置的内容,根据实际修改,不可直接复制
1)172.17.1.136主机
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 100
advert_int 1
nopreempt #不抢占模式,只有优先级高的机器上设置即可,优先级低的机器可不设置
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.17.3.210
}
}
virtual_server 172.17.3.210 3306 {
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 60 #会话保持时间
protocol TCP
real_server 172.17.1.136 3306 {
weight 3
notify_down /root/shutdown.sh #检测到服务down后执行的脚本
TCP_CHECK {
nb_get_retry 3 #重连次数
connect_timeout 10 #连接超时时间
delay_before_retry 3 #重连间隔时间
connect_port 3306 #健康检查端口
}
}
}
2)172.17.3.134主机
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL # 标识本节点的字条串,通常为hostname
vrrp_skip_check_adv_addr
#vrrp_strict #这个最好注释掉,否则可能造成物理机的浏览器无法访问应用
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
#state MASTER
state BACKUP
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { # Block limited to 20 IP addresses @IP
172.17.3.210
}
}
#虚拟服务器定义块
virtual_server 172.17.3.210 3306 {
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 172.17.3.134 {
weight 3
notify_down /root/shutdown.sh
TCP_CHECK {
nb_get_retry 3 #重连次数
connect_timeout 10 #连接超时时间
delay_before_retry 3 #重连间隔时间
connect_port 3306 #健康检查端口
}
}
}
编写检测服务down后所要执行的脚本shutdown.sh:
vim /root/shtdown.sh
内容为
#!/bin/bash
killall keepalive
注:此脚本是上面配置文件notify_down选项所用到的,keepalived使用notify_down选项来检查real_server的服务状态,当发现real_server服务故障时,便触发此脚本;我们可以看到,脚本就一个命令,通过killall keepalived强制杀死keepalived进程,从而实现了MySQL故障自动转移。另外,我们不用担心两个MySQL会同时提供数据更新操作,因为每台MySQL上的keepalived的配置里面只有本机MySQL的IP+VIP,而不是两台MySQL的IP+VIP
2.启动keepalived并查看日志
?
-
chkconfig keepalived on service keepalived start #启动服务 service keepalived stop #停止服务 service keepalived restart #重启服务 systemctl enable keepalived.service #设置开机启动
- 启动后查看日志:
tail -f /var/log/messages
3.测试
在远程客户端通过vip登陆测试
mysql -h 172.17.3.210 -uroot -p
4.其他
1)修改日志位置
修改日志文件存放位置/var/log/keepalived/keepalived.log
echo 'local0.* /var/log/keepalived/keepalived.log' >>/etc/rsyslog.conf
重启日志服务
systemctl restart rsyslog
2)keepalived配置参数
全局定义块
1、email通知(notification_email、smtp_server、smtp_connect_timeout):用于服务有故障时发送邮件报警,可选项,不建议用。需要系统开启sendmail服务,建议用第三独立监控服务,如用nagios全面监控代替。
2、lvs_id:lvs负载均衡器标识,在一个网络内,它的值应该是唯一的。
3、router_id:用户标识本节点的名称,通常为hostname
4、花括号{}:用来分隔定义块,必须成对出现。如果写漏了,keepalived运行时不会得到预期的结果。由于定义块存在嵌套关系,因此很容易遗漏结尾处的花括号,这点需要特别注意。
VRRP实例定义块
vrrp_sync_group:同步vrrp级,用于确定失败切换(FailOver)包含的路由实例个数。即在有2个负载均衡器的场景,一旦某个负载均衡器失效,需要自动切换到另外一个负载均衡器的实例是哪
group:至少要包含一个vrrp实例,vrrp实例名称必须和vrrp_instance定义的一致
vrrp_instance:vrrp实例名
1> state:实例状态,只有MASTER 和 BACKUP两种状态,并且需要全部大写。抢占模式下,其中MASTER为工作状态,BACKUP为备用状态。当MASTER所在的服务器失效时,BACKUP所在的服务会自动把它的状态由BACKUP切换到MASTER状态。当失效的MASTER所在的服务恢复时,BACKUP从MASTER恢复到BACKUP状态。
2> interface:对外提供服务的网卡接口,即VIP绑定的网卡接口。如:eth0,eth1。当前主流的服务器都有2个或2个以上的接口(分别对应外网和内网),在选择网卡接口时,一定要核实清楚。
3> mcast_src_ip:本机IP地址
4> virtual_router_id:虚拟路由的ID号,每个节点设置必须一样,可选择IP最后一段使用,相同的 VRID 为一个组,他将决定多播的 MAC 地址。
5> priority:节点优先级,取值范围0~254,MASTER要比BACKUP高
6> advert_int:MASTER与BACKUP节点间同步检查的时间间隔,单位为秒
7> lvs_sync_daemon_inteface:负载均衡器之间的监控接口,类似于 HA HeartBeat 的心跳线。但它的机制优于 Heartbeat,因为它没有“裂脑”这个问题,它是以优先级这个机制来规避这个麻烦的。在 DR 模式中,lvs_sync_daemon_inteface与服务接口interface使用同一个网络接口
8> authentication:验证类型和验证密码。类型主要有 PASS、AH 两种,通常使用PASS类型,据说AH使用时有问题。验证密码为明文,同一vrrp 实例MASTER与BACKUP使用相同的密码才能正常通信。
9> smtp_alert:有故障时是否激活邮件通知
10> nopreempt:禁止抢占服务。默认情况,当MASTER服务挂掉之后,BACKUP自动升级为MASTER并接替它的任务,当MASTER服务恢复后,升级为MASTER的BACKUP服务又自动降为BACKUP,把工作权交给原MASTER。当配置了nopreempt,MASTER从挂掉到恢复,不再将服务抢占过来。
11> virtual_ipaddress:虚拟IP地址池,可以有多个IP,每个IP占一行,不需要指定子网掩码。注意:这个IP必须与我们的设定的vip保持一致。
虚拟服务器virtual_server定义块
virtual_server:定义一个虚拟服务器,这个ip是virtual_ipaddress中定义的其中一个,后面一个空格,然后加上虚拟服务的端口号。
1> delay_loop:健康检查时间间隔,单位:秒
2> lb_algo:负载均衡调度算法,互联网应用常用方式为wlc或rr
3> lb_kind:负载均衡转发规则。包括DR、NAT、TUN 3种,一般使用路由(DR)转发规则。
4> persistence_timeout:http服务会话保持时间,单位:秒
5> protocol:转发协议,分为TCP和UDP两种
real_server:真实服务器IP和端口,可以定义多个
1> weight:负载权重,值越大,转发的优先级越高
2> notify_down:服务停止后执行的脚本
3> TCP_CHECK:服务有效性检测
* connect_port:服务连接端口
* connect_timeout:服务连接超时时长,单位:秒
* nb_get_retry:服务连接失败重试次数
* delay_before_retry:重试连接间隔,单位:秒
END
https://blog.csdn.net/qq_38591756/article/details/82958313#comments_14346436
内容总结
以上是互联网集市为您收集整理的keepalived实现Tomcat服务和MySQl双机热备全部内容,希望文章能够帮你解决keepalived实现Tomcat服务和MySQl双机热备所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。