上一篇博客已经讲了么么安装和建立连接,这章就偷个懒,直接接上章的内容把!
Memcached
的复制功能支持多个
Memcached
之间相互复制(双向复制,主备都是可读可写的),可以解决
Memcached
的容灾问题。
要使用
Memcached
复制架构,需要
关停或卸载
之前
@1
机器上的
1.5.7
版
本的
memcached
,重新下载
支持复制功能
的
Memcached
安装包。
部署过程
@1 @3 都需要 memcached-1.2.8-repcached-2.2.tar.gz包
@1需要pkill memcached
@1
[root@node11 ~]#yum -y install openssl-devel
[root@node11 ~]# tar xf keepalived-2.2.2.tar.gz -C /opt/
[root@node11 ~]# cd /opt/keepalived-2.2.2/
[root@node11 keepalived-2.2.2] ./configure --prefix=/usr/local/keepalived
[root@node11 keepalived-2.2.2] make && make install
[root@node11 keepalived-2.2.2]# vim /usr/lib/systemd/system/keepalived.service
KEEPALIVED_OPTIONS=" -f /usr/local/keepalived/etc/keepalived/keepalived.conf -D"
[root@node11 keepalived-2.2.2]# vim /usr/local/keepalived/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id node11
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.11.111
}
}
virtual_server 192.168.11.111 11211 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 20
protocol TCP
sorry_server 192.168.11.13 11211
real_server 192.168.11.11 11211 {
weight 3
notify_down /root/memcached.sh
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 11211
}
}
}
[root@node11 keepalived-2.2.2]# cat > /root/memcached.sh<<EOF
> #!/bin/bash
> /usr/bin/systemctl stop keepalived
> EOF
[root@node11 keepalived-2.2.2]# chmod +x /root/memcached.sh
[root@node11 keepalived-2.2.2]# systemctl enable --now keepalived
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.
[root@node11 keepalived-2.2.2]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:bc:cb:e3 brd ff:ff:ff:ff:ff:ff
inet 192.168.11.11/24 brd 192.168.11.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:febc:cbe3/64 scope link
valid_lft forever preferred_lft forever
[root@node11 keepalived-2.2.2]# cat > /root/memcached.sh<<EOF
> #!/bin/bash
> /usr/bin/systemctl stop keepalived
> EOF
[root@node11 ~]# cd
[root@node11 ~]# vim memcached.sh
#!/bin/bash
/usr/bin/systemctl stop keepalived
[root@node11 ~]# chmod +x memcached.sh
[root@node11 ~]# systemctl enable --now keepalived
[root@node11 ~]# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:11211 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::11211 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@node11 ~]# systemctl restart keepalived
[root@node11 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:bc:cb:e3 brd ff:ff:ff:ff:ff:ff
inet 192.168.11.11/24 brd 192.168.11.255 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.11.111/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:febc:cbe3/64 scope link
valid_lft forever preferred_lft forever
[root@node11 ~]#
@1远程复制给@3
[root@node11 ~]# scp /usr/local/keepalived/etc/sysconfig/keepalived /root/memcached.sh /usr/local/keepalived/etc/keepalived/keepalived.conf 192.168.11.13:/root
root@192.168.11.13's password:
keepalived 100% 724 0.7KB/s 00:00
memcached.sh 100% 47 0.1KB/s 00:00
keepalived.conf
@3
yum -y install openssl-devel
29 tar xf keepalived-2.2.2.tar.gz -C /opt/
30 cd /opt/keepalived-2.2.2/
31 ./configure --prefix=/usr/local/keepalived
[root@node13 keepalived-2.2.2]# echo $?
0
[root@node13 keepalived-2.2.2]# make && make install
...过程略。。。
[root@node13 keepalived-2.2.2]# vim /usr/lib/systemd/system/keepalived.service
[Unit]
Description=LVS and VRRP High Availability Monitor
After=network-online.target syslog.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/run/keepalived.pid
KillMode=process
EnvironmentFile=-/usr/local/keepalived/etc/sysconfig/keepalived
ExecStart=/usr/local/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
[root@node13 keepalived-2.2.2]# cd
[root@node13 ~]# cp keepalived /usr/local/keepalived/etc/sysconfig/
cp:是否覆盖"/usr/local/keepalived/etc/sysconfig/keepalived"? y
[root@node13 ~]# \cp keepalived.conf /usr/local/keepalived/etc/keepalived/keepalived.conf
[root@node13 ~]# vim /usr/local/keepalived/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id node13
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 80
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.11.111
}
}
virtual_server 192.168.11.111 11211 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 20
protocol TCP
sorry_server 192.168.11.11 11211
real_server 192.168.11.13 11211 {
weight 3
notify_down /root/memcached.sh
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 11211
}
}
}
[root@node13 ~]# systemctl enable --now keepalived.service
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.
[root@node13 ~]# systemctl status keepalived.service
● keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disabled)
Active: active (running) since 三 2021-06-23 01:02:22 CST; 18s ago
Process: 16442 ExecStart=/usr/local/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 16443 (keepalived)
CGroup: /system.slice/keepalived.service
├─16443 /usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived...
├─16444 /usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived...
└─16445 /usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived...
6月 23 01:02:22 node13 Keepalived_vrrp[16445]: Assigned address 192.168.11.13 f...0
6月 23 01:02:22 node13 Keepalived_vrrp[16445]: Assigned address fe80::20c:29ff:...0
6月 23 01:02:22 node13 Keepalived_vrrp[16445]: Registering gratuitous ARP share...l
6月 23 01:02:22 node13 Keepalived_vrrp[16445]: (VI_1) removing VIPs.
6月 23 01:02:22 node13 Keepalived_vrrp[16445]: (VI_1) Entering BACKUP STATE (init)
6月 23 01:02:22 node13 Keepalived_vrrp[16445]: VRRP sockpool: [ifindex( 2), fa...]
6月 23 01:02:22 node13 Keepalived[16443]: Startup complete
6月 23 01:02:22 node13 Keepalived_healthcheckers[16444]: Gained quorum 1+0=1 <= ...
6月 23 01:02:22 node13 Keepalived_healthcheckers[16444]: Activating healthchecke...
6月 23 01:02:25 node13 Keepalived_healthcheckers[16444]: TCP connection to [192....
Hint: Some lines were ellipsized, use -l to show in full.
[root@node13 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:4a:79:5c brd ff:ff:ff:ff:ff:ff
inet 192.168.11.13/24 brd 192.168.11.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe4a:795c/64 scope link
valid_lft forever preferred_lft forever
[root@node13 ~]#
验证@1关闭memcached此时vip会不会飘逸到@3上
[root@node11 ~]# ps -ef | grep memcached
root 44638 1 0 6月22 ? 00:00:00 /usr/local/memcached_replication/bin/memcached -d -u root -m 512 -c 2048 -x 192.168.11.13
root 50982 1468 0 01:07 pts/0 00:00:00 grep --color=auto memcached
[root@node11 ~]# pkill memcached
[root@node11 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:bc:cb:e3 brd ff:ff:ff:ff:ff:ff
inet 192.168.11.11/24 brd 192.168.11.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:febc:cbe3/64 scope link
valid_lft forever preferred_lft forever
[root@node11 ~]#
@3上查看VIP飘逸过来,成功
[root@node13 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:4a:79:5c brd ff:ff:ff:ff:ff:ff
inet 192.168.11.13/24 brd 192.168.11.255 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.11.111/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe4a:795c/64 scope link
valid_lft forever preferred_lft forever
[root@node13 ~]#
@2客户端连接的话
[root@node12 memcache-2.2.7]# vim /usr/local/httpd/htdocs/test1.php
[root@node12 memcache-2.2.7]# cat /usr/local/httpd/htdocs/test1.php
<?php
$memcache = new Memcache();
$memcache->connect('192.168.11.111',11211); #连接的是vip
$memcache->set('key','Memcache test Successfull!',0,60);
$result = $memcache->get('key');
unset($memcache);
echo $result;
phpinfo();
?>
[root@node12 memcache-2.2.7]#
最后浏览器访问192.168.11.12/test1.php
好的,今天的分享就到这里了,感谢大家的观看,有什么好的意见或建议希望大家留言,
最后愿你们未来可期!!!