LVS理論基礎請點擊下面的網址:html
http://my.oschina.net/u/1454868/blog/208269mysql
網絡結構:linux
direct server:10.10.54.85(3306-master) 10.10.54.85(eth0) 192.168.1.83(eth1) vip1:10.10.54.89(eth0) vip2:192.168.1.84(eth1) real server:192.168.1.86(80,3306-slave) geteway:192.168.1.84 real server:192.168.1.88(80,3306-slave) gateway:192.168.1.84
須要搭建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 (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> slave start; 從2: mysql> slave start; (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(MASTER---NAT):sql
1.網絡架構 direct server:10.10.54.85(3306-master) 10.10.54.85(eth0) 192.168.1.83(eth1) vip1:10.10.54.89(eth0) vip2:192.168.1.84(eth1) real server:192.168.1.86(80,3306-slave) geteway:192.168.1.84 real server:192.168.1.88(80,3306-slave) gateway:192.168.1.84 2.開啓內核轉發 [root@nan85 ~]# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 3.先在master(10.10.54.85)上安裝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 //配置yum源 根據本身的ftp yum源作 [root@nan85 lvs]# vim /etc/yum.repos.d/CentOS-ftp.repo [Packages] name=Packages baseurl=ftp://10.201.1.221/Packages gpgcheck=0 enable=1 [Packages2] name=Packages2 baseurl=ftp://10.201.1.221/Packages2 gpgcheck=0 enable=1 #yum clean all //安裝依賴包 [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 ./configure --prefix=/usr/local/keepalived --enable-snmp --sysconfdir=/etc/ 出現錯誤: 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 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 [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語法進行檢查,在編輯前須要備份 4.在MASTER上修改keepalived [root@nan85 ~]# vim /etc/keepalived/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_ipaddress { 192.168.1.84/24 dev eth1 label eth1:1 } } virtual_server 10.10.54.89 80 { delay_loop 6 lb_algo rr lb_kind NAT nat_mask 255.255.255.0 #persistence_timeout 50 protocol TCP real_server 192.168.1.86 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.1.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 NAT nat_mask 255.255.255.0 #persistence_timeout 50 protocol TCP real_server 192.168.1.86 3306 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3306 } } real_server 192.168.1.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 #ifconfig 查看出現 eth0:1 eth1:1 則成功 也可用下面的命令查看: #ip addr 5.測試 //非direct server上 telnet 10.10.54.89 3306 telnet 10.10.54.89 80 master 節點上: #ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.10.54.89:3306 rr -> 192.168.1.86:3306 Masq 1 1 0 -> 192.168.1.87:3306 Masq 1 0 1