memcached+keepalived高可用和双主复制

上一篇博客已经讲了么么安装和建立连接,这章就偷个懒,直接接上章的内容把!

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

好的,今天的分享就到这里了,感谢大家的观看,有什么好的意见或建议希望大家留言,

最后愿你们未来可期!!!

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值