LVS(MASTER---NAT)

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
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息