LVS的理論基礎請點擊下面的網址:html
http://my.oschina.net/u/1454868/blog/208269mysql
網絡架構:linux
direct server:10.10.54.85(3306) backup:10.10.54.84 vip:10.10.54.89(eth0) real server:10.10.54.86(80,3306) real server:10.10.54.88(80,3306)
mysql主從搭建,根據上面的網絡架構搭建:c++
搭建主從mysql (1)規劃主從主機 主機:10.10.54.85 從機1:10.10.54.86 從機2:10.10.54.88 (2)更改主機配置文件 [root@nan85 etc]# vim /etc/my.cnf log-bin=master-bin binlog_format=mixed server-id=1 (3)更改從機配置文件 從1 [root@nan86 ~]# vim /etc/my.cnf log-bin=slave-bin binlog_format=mixed server-id=10 從2 [root@nan88 ~]# vim /etc/my.cnf log-bin=slave-bin binlog_format=mixed server-id=11 在slave1和slave2上重啓mysql # /etc/init.d/mysqld restart (4)在master上建立複製用戶,並授予權限 mysql> grant replication slave on *.* to 'emp1'@'10.10.54.86' identified by 'emp1'; mysql> flush privileges; mysql> grant replication slave on *.* to 'emp2'@'10.10.54.88' identified by 'emp2'; mysql> flush privileges; (5)查看master上二進制日誌和position位置 mysql> show master status; +-------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +-------------------+----------+--------------+------------------+ | master-bin.000006 | 990 | | | +-------------------+----------+--------------+------------------+ (6)備份master上的數據,把備份master數據庫還原到從庫上 (7)在slave上面change master操做 從1: mysql> change master to master_host='10.10.54.85',master_user='emp1', master_password='emp1', master_log_file='master-bin.000006',master_log_pos=990; 從2: mysql> change master to master_host='10.10.54.85',master_user='emp2',master_password='emp2',master_log_file='master-bin.000006',master_log_pos=990; (8)在slave上啓動slave 從1: mysql> start slave; 從2: mysql> start slave ; (9)查看slave狀態 肯定slave上的I/O線程和SQL線程狀態爲YES 從1: mysql> show slave status\G; Slave_IO_Running: Yes Slave_SQL_Running: Yes 從2: mysql> show slave status\G; Slave_IO_Running: Yes Slave_SQL_Running: Yes
搭建LVS的DR模式(MASTER-BACKUP-DR):sql
1.網絡架構 direct server:10.10.54.85(3306) backup:10.10.54.84 vip:10.10.54.89(eth0) real server:10.10.54.86(80,3306) real server:10.10.54.88(80,3306) 2.在MASTER DIRECTOR SERVER上編譯ipvsadm,keepalived (1)下載軟件 //本機內核版本: # uname -r 2.6.32-358.el6.x86_64 下載地址: --相應版本 http://www.linuxvirtualserver.org/software/ipvs.html#kernel-2.6 ipvsadm-1.26.tar.gz keepalived http://www.keepalived.org/download.html keepalived-1.2.9.tar.gz (2)編譯安裝ipvsadm //安裝依賴包 [root@nan85 ipvsadm-1.26]# yum list|grep kernel-dev [root@nan85 ipvsadm-1.26]# yum list|grep popt [root@nan85 lvs]# yum install popt-static.x86_64 popt-devel.x86_64 popt.x86_64 [root@nan85 lvs]# yum -y install wget libnl* popt* gcc.x86_64 gcc-c++.x86_64 gcc-objc++.x86_64 kernel-devel.x86_64 make popt-static.x86_64 //確認模塊 [root@nan85 lvs]# modprobe -l|grep ipvs kernel/net/netfilter/ipvs/ip_vs.ko kernel/net/netfilter/ipvs/ip_vs_rr.ko kernel/net/netfilter/ipvs/ip_vs_wrr.ko kernel/net/netfilter/ipvs/ip_vs_lc.ko kernel/net/netfilter/ipvs/ip_vs_wlc.ko kernel/net/netfilter/ipvs/ip_vs_lblc.ko kernel/net/netfilter/ipvs/ip_vs_lblcr.ko kernel/net/netfilter/ipvs/ip_vs_dh.ko kernel/net/netfilter/ipvs/ip_vs_sh.ko kernel/net/netfilter/ipvs/ip_vs_sed.ko kernel/net/netfilter/ipvs/ip_vs_nq.ko kernel/net/netfilter/ipvs/ip_vs_ftp.ko //編譯keepalived-1.2.9 [root@nan85 lvs]# tar xvf keepalived-1.2.9.tar.gz 須要安裝基礎軟件包openssl和popt yum install net-snmp.x86_64 net-snmp-devel.x86_64 cd keepalived-1.2.19 ./configure --prefix=/usr/local/keepalived --enable-snmp --sysconfdir=/etc/ Keepalived version : 1.2.9 Compiler : gcc Compiler flags : -g -O2 Extra Lib : -Wl,-z,relro -Wl,-z,now -L/usr/lib64 -lnetsnmpagent -lnetsnmphelpers -lnetsnmpmibs -lnetsnmp -Wl,-E -Wl,-rpath,/usr/lib64/perl5/CORE -lssl -lcrypto -lcrypt -lnl Use IPVS Framework : Yes IPVS sync daemon support : Yes IPVS use libnl : Yes Use VRRP Framework : Yes Use VRRP VMAC : Yes SNMP support : Yes SHA1 support : No Use Debug flags : No ################################################################################### 出現錯誤: configure: error: unable to find net-snmp-config 解決方法: [root@nan85 keepalived-1.2.9]# yum install net-snmp.x86_64 net-snmp-devel.x86_64 ################################################################################### [root@nan85 keepalived-1.2.9]# make && make install [root@nan85 ~]# cp /usr/local/keepalived/sbin/keepalived /sbin/ [root@nan85 ~]# cp /usr/local/keepalived/bin/genhash /bin/ [root@nan85 ~]# cd /etc/keepalived/ [root@nan85 keepalived]# ls keepalived.conf samples --keepalived軟件不對keepalived語法進行檢查,在編輯前須要備份 3.在BACKUP DIRECTOR SERVER上編譯ipvsadm,keepalived 在兩個從上 //安裝依賴包 # yum list|grep kernel-dev # yum list|grep popt # yum install popt-static.x86_64 popt-devel.x86_64 popt.x86_64 # yum -y install wget libnl* popt* gcc.x86_64 gcc-c++.x86_64 gcc-objc++.x86_64 kernel-devel.x86_64 make popt-static.x86_64 //確認模塊 # modprobe -l|grep ipvs kernel/net/netfilter/ipvs/ip_vs.ko kernel/net/netfilter/ipvs/ip_vs_rr.ko kernel/net/netfilter/ipvs/ip_vs_wrr.ko kernel/net/netfilter/ipvs/ip_vs_lc.ko kernel/net/netfilter/ipvs/ip_vs_wlc.ko kernel/net/netfilter/ipvs/ip_vs_lblc.ko kernel/net/netfilter/ipvs/ip_vs_lblcr.ko kernel/net/netfilter/ipvs/ip_vs_dh.ko kernel/net/netfilter/ipvs/ip_vs_sh.ko kernel/net/netfilter/ipvs/ip_vs_sed.ko kernel/net/netfilter/ipvs/ip_vs_nq.ko kernel/net/netfilter/ipvs/ip_vs_ftp.ko //編譯keepalived-1.2.9 # tar xvf keepalived-1.2.9.tar.gz 須要安裝基礎軟件包openssl和popt yum install net-snmp.x86_64 net-snmp-devel.x86_64 cd keepalived-1.2.19 ./configure --prefix=/usr/local/keepalived --enable-snmp --sysconfdir=/etc/ Keepalived version : 1.2.9 Compiler : gcc Compiler flags : -g -O2 Extra Lib : -Wl,-z,relro -Wl,-z,now -L/usr/lib64 -lnetsnmpagent -lnetsnmphelpers -lnetsnmpmibs -lnetsnmp -Wl,-E -Wl,-rpath,/usr/lib64/perl5/CORE -lssl -lcrypto -lcrypt -lnl Use IPVS Framework : Yes IPVS sync daemon support : Yes IPVS use libnl : Yes Use VRRP Framework : Yes Use VRRP VMAC : Yes SNMP support : Yes SHA1 support : No Use Debug flags : No ################################################################################### 出現錯誤: configure: error: unable to find net-snmp-config 解決方法: # yum install net-snmp.x86_64 net-snmp-devel.x86_64 ################################################################################### # make && make install # cp /usr/local/keepalived/sbin/keepalived /sbin/ # cp /usr/local/keepalived/bin/genhash /bin/ # cd /etc/keepalived/ # ls keepalived.conf samples --keepalived軟件不對keepalived語法進行檢查,在編輯前須要備份 4.配置MASTER DIRECTORY SERVER並經過測試 [root@nan85 keepalived]# vim keepalived.conf ! Configuration File for keepalived global_defs { notification_email { lisn@shiwei.com } notification_email_from lisn@shiwei.com smtp_server mail.shiwei.com smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.10.54.89/24 dev eth0 label eth0:1 } } virtual_server 10.10.54.89 80 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 #persistence_timeout 50 protocol TCP real_server 10.10.54.86 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 10.10.54.88 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } virtual_server 10.10.54.89 3306 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 #persistence_timeout 50 protocol TCP real_server 10.10.54.86 3306 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3306 } } real_server 10.10.54.88 3306 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3306 } } } [root@nan85 keepalived]# /etc/init.d/keepalived restart 5.複製MASTER DIRECTORY SERVER配置文件到BACKUP DIRECTORY SERVER 把主上的即10.10.54.85上的配置文件複製到10.10.54.84上,而後作以下修改 [root@nan84 keepalived]# pwd /etc/keepalived [root@nan84 keepalived]# vim keepalived.conf 修改SLVAE config: router_id LVS_SLAVE state BACKUP priority 89 6.測試LVS高可用 (1)中止master 在BACKUP上面查看54.89時(vip)是否漂移過來 [root@nan85 lvs]# /etc/init.d/keepalived stop //非direct server上 telnet 10.10.54.89 3306 [root@nan84 keepalived]# ifconfig (2)開啓MASTER 在MASTER上查看54.89(vip)是否漂移過來 [root@nan85 keepalived]# /etc/init.d/keepalived start [root@nan85 keepalived]# ifconfig //非direct server上 telnet 10.10.54.89 3306