配置memcached主緩存節點和從緩存節點-----兩臺配置相同 開啓三臺虛擬機: 192.168.80.100 配置memcached主緩存節點 192.168.80.101 配置memcached從緩存節點 192.168.80.102
1.關閉防火牆機及Selinux[重要](三臺開始都要啓動) systemctl stop firewalld //關閉防火牆 setenforce 0 //關閉監控
2.安裝環境包 yum install gcc gcc-c++ make -y
3.編譯安裝libevent(必須先安裝) 安裝上傳軟件 yum install lrz* -y
#解壓 tar xf libevent-2.1.8-stable.tar.gz -C /opt tar xf memcached-1.5.6.tar.gz -C /opt/ #切換到libevent目錄 cd /opt/libevent-2.1.8-stable/
#配置 ./configure --prefix=/usr/local/libevent
#編譯及安裝 make && make install
3.編譯安裝memcached #切換到memcached cd /opt/memcached-1.5.6/
#配置(指定libevent路徑) ./configure \ --prefix=/usr/local/memcached \ --with-libevent=/usr/local/libevent/
#編譯及安裝 make && make install
4.優化啓動(支持複製功能的Mencached須要安裝後的libevent-2.1.so.6模塊,否則啓動服務會報錯) ln -s /usr/local/libevent/lib/libevent-2.1.so.6.0.2 /usr/lib64/libevent-2.1.so.6
5.分別在兩臺服務器上啓動memcached #主服務器 cd /usr/local/memcached/bin/ ./memcached -d -m 32m -l 192.168.80.100 -p 11211 -u root #從服務器 cd /usr/local/memcached/bin/ ./memcached -d -m 32m -l 192.168.80.101 -p 11211 -u root 6.檢查memcached是否啓動 netstat -anpt | grep memcached netstat -ntap | grep 11211
magent在主服務器安裝,從服務器不用安裝 編譯安裝magent 1.建立magent目錄 mkdir /opt/magent 2.解壓 tar xf magent-0.5.tar.gz -C /opt/magent 3.切換到目錄 cd /opt/magent 4.讓動態連接庫爲系統所共享 /sbin/ldconfig
5.編輯ketama.h,添加文件頭部信息 vi ketama.h #ifndef SSIZE_MAX #define SSIZE_MAX 32767
6.修改Makefile vi Makefile //libevent安裝路徑在/usr/local/libevent中使用如下內容: LIBS = -levent -lm -L /usr/local/libevent/lib INCLUDE=-I /usr/local/libevent/include
Magent + Keepalived實現Memcached高可用羣集 7.編譯(完成後會生成一個manage的可執行文件) make
8.複製mgent命令到系統管理中,便於使用 cp /opt/magent/magent /usr/bin/ 9.發送至從服務器 scp /opt/magent/magent root@192.168.80.101:/usr/bin
安裝keepalived yum -y install keepalived
1.編輯keepalived配置文件 vi /etc/keepalived/keepalived.conf 把裏面內容刪除添加如下內容 ! Configuration File for keepalived global_defs { router_id magent_H1 #指定router_id } vrrp_script magent { #定義函數 script "/root/shell/magent.sh" interval 2 } vrrp_instance VI_1 { state MASTER interface ens32 #本地網卡名稱 virtual_router_id 51 #id主從一致 priority 100 #主優先級大於從優先級 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { #調用函數 magent } virtual_ipaddress { #vip地址 192.168.80.188 } }
2.創建shell目錄 mkdir /root/shell 3.建立magent.sh腳本 vi /root/shell/magent.sh #!/bin/bash Keepalived=`ps -ef | grep keepalived | grep -v grep | wc -l` if [ $Keepalived -gt 0 ]; then magent -u root -n 51200 -l 192.168.80.188 -p 12000 -s 192.168.80.100:11211 -b 192.168.80.101:11211 else pkill -9 magent fi
參數說明: -n 51200 #定義用戶最大鏈接數 -l 192.168.175.188 #指定虛擬IP -p 12000 #指定端口號 -s #指定主緩存服務器 -b #指定從緩存服務器
4.賦予腳本執行權限 chmod +x /root/shell/magent.sh 5.啓動keepalived服務 systemctl enable keepalived systemctl start keepalived netstat -anpt | grep 12000
6.檢查keepalived服務狀態 systemctl status keepalived
7.檢查vip地址 ip addr show ens32
netstat -anpt | grep 11211
在從服務器上操做 1.安裝keepalived yum -y install keepalived
2.將主服務器上keepalived配置文件複製過來 scp root@192.168.80.100:/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
3.編輯keepalived配置文件 vi /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id magent_H2 #指定router_id } vrrp_script magent { #定義函數 script "/root/shell/magent.sh" interval 2 } vrrp_instance VI_1 { state BACKUP interface ens33 #本地網卡名稱 virtual_router_id 51 #id主從一致 priority 90 #主優先級大於從優先級 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { #vip地址 192.168.80.188 } track_script { #調用函數 magent } }
4.新建shell目錄 mkdir /root/shell 5.建立magent.sh腳本 vi /root/shell/magent.sh #!/bin/bash Keepalived=`ip addr | grep 192.168.80.188 | grep -v grep | wc -l` if [ $Keepalived -gt 0 ]; then magent -u root -n 51200 -l 192.168.80.188 -p 12000 -s 192.168.80.100:11211 -b 192.168.80.101:11211 else pkill -9 magent fi
6.賦予腳本執行權限 chmod +x /root/shell/magent.sh 7.啓動keepalived服務 systemctl enable keepalived systemctl start keepalived
8.檢查keepalived服務狀態 systemctl status keepalived
9.檢查vip地址 ip addr show ens32
在客戶端測試 1.安裝telnet客戶端 yum install telnet -y
2.鏈接memcached 測試複製功能 //鏈接vip進行測試,插入user鍵值 telnet 192.168.80.188 12000 Trying 192.168.80.188... Connected to 192.168.80.188. Escape character is '^]'. set user 0(標籤) 0(緩存時間永不過時) 5(緩存內容) 12345 STORED get user VALUE user 0 5 12345 END quit Connection closed by foreign host. //鏈接Memcached1,查詢user鍵值,能夠獲取,成功! telnet 192.168.80.100 11211 Trying 192.168.80.100... Connected to 192.168.80.100. Escape character is '^]'. get user VALUE user 0 5 12345 END quit Connection closed by foreign host.
//鏈接Memcached2,查詢user鍵值,也能夠獲取,成功! [root@centos7-1 ~]# telnet 192.168.80.101 11211 Trying 192.168.80.101... Connected to 192.168.80.101. Escape character is '^]'. get user VALUE user 0 5 12345 END quit Connection closed by foreign host.
測試單點故障 中止主服務器,去鏈接漂移地址,查看有木有出現內容