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