lvs+keepalived+tomcat+mysql集群
2臺Tomcat服務器配置虛擬IP實例
SNS_VIP 的網段需要使用ifconfig查看你的IP
SNS_VIP=192.168.110.200
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
授權
chmod 750 realserver
啟動
service realserver start
再次ifconfig查詢虛擬IP是否配置成功
2臺服務器安裝keepalived
yum –y install keepalived
配置keepalived.conf文件,安裝的位置可能不能,本實例采用默認安裝文件(/etc/keepalived/keepalived.conf)
global_defs {
# notification_email {
# }
# notification_email_from [email protected]
# smtp_server smtp.exmail.qq.com
# smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER ##備份LVS服務器設置為BACKUP
interface eth0 # #設置對外服務的接口
virtual_router_id 51
priority 100 #設置優先級,數值越大,優先級越高,backup設置為99,這樣就能實現當master宕機後自動將backup變為master,而當原master恢復正常時,則現在的master再次變為backup。
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.110.200 ##設置VIP,可以多個,每個占一行。 此 IP也是對外映射的IP
}
}
virtual_server 192.168.110.200 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.110.5 80 {
weight 6
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.110.6 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
對於udp的監聽,由於keepalived不直接支持,需要使用MISC_CHECK健康檢查,MISC_CHECK此方法根據shell腳本的返回值做判斷,具體參考keepalived手冊
啟動keepalived
service keepalived start
3臺MySQL數據庫安裝,數據庫的安裝請參考http://blog.51cto.com/9695005/2054161
1,mysql主服務器的配置
配置my.cnf
設置server-id和log-bin,主服務器和從服務器server-id不能一樣,
可以使用查看
SHOW VARIABLES LIKE 'server_id';
重啟mysql服務器
service mysqld restart
1) Mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | | |
+------------------+----------+--------------+------------------+
2) 記錄下 FILE 及 Position 的值,在後面進行從服務器操作的時候需要用到。
添加一個用戶,給從服務器使用
grant replication slave on *.* to 'gool'@'192.168.110.25' identified by 'gool'
2配置從服務器
change master to
master_host='主服務器ip',
master_user='gool',
master_password='gool',
master_log_file='mysql-bin.000001',
master_log_pos=106;
1) 正確執行後啟動Slave同步進程
2) 啟動slave
mysql> start slave;
3) 查看slave狀態
mysql> show slave status\G
4) 其中Slave_IO_Running 與 Slave_SQL_Running 的值都必須為YES,才表明狀態正常。
測試主從復制
1:先確定主,從庫上沒有任何自定義表
2:主服務器上的操作
在主服務器上創建數據庫gool_db
mysql> create database gool_db;
在主服務器上創建表itcast_tb
mysql> create table gool_tb(id int(3),name char(9));
在主服務器上的表itcast_tb中插入記錄
mysql> insert into gool_tb values(01,'gool1');
3:從服務器上查看是否已經同步?
總結:搭建過程中可能引起失敗的原因
1:server_id 配置的一樣或是配置的沒有更新到Mysql數據中來
2:防火墻攔截了3306端口
3:用戶與密碼不正確
4:Mysql不允許其它機器訪問
mysql-proxy服務器配置
查看lua是否安裝
rpm -qa | grep lua
安裝依賴
yum -y install gcc* gcc-c++*autoconf* automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig* libevent* glib* readline*
tar xzvfmysql-proxy-**.tar.gz
cd mysql-proxy-**
cp lib/rw-splitting.lua /opt/mysql-proxy/scripts --此目錄自己創建
修改默認連接,進行快速測試,不修改的話要達到連接數為4時才啟用讀寫分離
vim /opt/mysql-proxy/scripts/rw-splitting.lua
=============================
-- connection pool
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, //默認為4
max_idle_connections = 1, //默認為8
is_debug = false
}
啟動mysql-proxy
./mysql-proxy --proxy-backend-addresses="IP:數據庫端口" --proxy-read-only-backend-addresses="IP:數據庫端口" --proxy-lua-script=/opt/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
最後:
配置web項目,啟動,測試環境
lvs+keepalived+tomcat+mysql集群