LVS+Keepalived+Tomcat+MySQL部署
目录
1
方案一构架图 ............................................................................................................................ 4 1.1
准备工作 ................................................................................................................................. 4
1.1.1 1.1.2 1.1.3
1.2
软件列表 ......................................................................................................................... 4 虚拟机列表 ..................................................................................................................... 5 虚拟机设置 ..................................................................................................................... 5
TOMCAT部署 ........................................................................................................................... 5
1.2.1 1.2.2
1.3
JDK安装 ......................................................................................................................... 6 Tomcat安装 .................................................................................................................. 7
MYSQL部署 ........................................................................................................................... 7
1.3.1 1.3.2 1.3.3
1.4
MySQL安装 .................................................................................................................. 8 MySQL常见错误 ........................................................................................................ 10 MySQL主主同步配置 ................................................................................................ 11
LVS+KEEPALIVED部署 .......................................................................................................... 12
1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6
1.5 1.6
LVS安装 ....................................................................................................................... 13 LVS调优 ....................................................................................................................... 13 Keepalived安装 ......................................................................................................... 14 Keepalived配置 ......................................................................................................... 15 负载均衡Tomcat配置 ............................................................................................... 17 负载均衡MySQL配置 ............................................................................................... 18
方案总结 ............................................................................................................................... 20 虚拟机配置文件 ................................................................................................................... 21
1 / 34
1.6.1 Mysql配置文件 ................................................................................................................ 21 1.6.2 keepalived配置文件 ......................................................................................................... 21 2
方案二构架图 .......................................................................................................................... 22 2.1
准备工作 ............................................................................................................................... 22
2.1.1 2.1.2 2.1.3
2.2
软件列表 ....................................................................................................................... 22 虚拟机列表 ................................................................................................................... 23 虚拟机设置 ................................................................................................................... 23
TOMCAT部署 ......................................................................................................................... 24
2.2.1 2.2.2
2.3
JDK安装 ....................................................................................................................... 24 Tomcat安装 ................................................................................................................ 24
MYSQL部署 ......................................................................................................................... 24
2.3.1 2.3.2 2.3.3 2.3.4
2.4
MySQL安装 ................................................................................................................ 25 MySQL常见错误 ........................................................................................................ 25 MySQL主主同步配置 ................................................................................................ 25 MySQL主从同步配置 ................................................................................................ 25
AMOEBA部署 ........................................................................................................................ 26
2.4.1 2.4.2 2.4.3
2.5 2.6
Amoeba安装 .............................................................................................................. 26 Amoeba配置 .............................................................................................................. 27 负载均衡Amoeba配置 ............................................................................................. 30
方案总结 ............................................................................................................................... 32 虚拟机配置文件 ................................................................................................................... 32
2.6.1 Mysql配置文件 ................................................................................................................ 32
2 / 34
2.6.2 Amoeba配置文件 ............................................................................................................. 32 2.6.3 keepalived配置文件 ......................................................................................................... 33
3 / 34
1 方案一构架图
本方案架构采用6台虚拟机进行,每个节点均为高可用。其中LVS+Keepalived分配2台,设置为主备模式,并且配置负载均衡采用rr+DR模式。Tomcat分配2台,mysql分配2台,负载均衡由LVS+Keepalived提供。构架图如下图示:
Session同步VIP192.168.150.200VIPTomcatVIP192.168.150.200Keepalived1Ip:192.168.150.106LVS+KeepalivedMysqlMasterVIP192.168.150.202Tomcat1Ip:192.168.150.108Tomcat2Ip:192.168.150.109VIPVIPVIP192.168.150.202Master-2Ip:192.168.150.100主主同步Master-1Ip:192.168.150.101Keepalived2Ip:192.168.150.107
1.1 准备工作 1.1.1 软件列表
ipvsadm-1.26.tar.gz keepalived-1.2.23.tar.gz apache-tomcat-7.0.70.tar.gz jdk-7u80-linux-x.tar.gz mysql-5.7.9-1.el6.x86_.rpm-bundle.tar 4 / 34
CentOS-6.6-x86_-minimal.iso
1.1.2 虚拟机列表
虚拟机名称 Tomcat1 Tomcat2 Keepalived1 Keepalived2 Master1 Master2 真实IP(RIP) 192.168.150.108 192.168.150.109 192.168.150.106 192.168.150.107 192.168.150.101 192.168.150.100 虚拟IP(VIP) Lo:192.168.150.200/32 192.168.150.200/24 192.168.150.202/24 Lo: 备注 192.168.150.200/32 1.1.3 虚拟机设置
所有虚拟机关闭selinux,命令如下: [root@tomcat1 /]# vi /etc/sysconfig/selinux 修改为:SELINUX=disable
所有虚拟机关闭iptables,命令如下: [root@tomcat1 /]# service iptables stop [root@tomcat1 /]# chkconfig iptables off 然后重启虚拟机。
1.2 Tomcat部署
在如下两台虚拟机安装: 虚拟机名称 真实IP(RIP) 5 / 34
Tomcat1 Tomcat2 192.168.150.108 192.168.150.109 1.2.1 JDK安装
查看虚拟机是否已经安装JDK,如果已经安装卸载它,命令如下: [root@tomcat1 /]# rpm –qa | grep java //查找是否已经安装 [root@tomcat1/]# yum erase –y ******* //卸载已安装的JDK 安装JDK1.7_80,命令如下:
[root@tomcat1/]# tar –zxvf jdk-7u80-linux-x.tar.gz //解压缩到当前路径
[root@tomcat1/]# mv jdk1.7.0_80 /java/ //移动jdk1.7.0_80 到 /java 路径下 [root@tomcat1/]# ln –s /java/jdk1.7.0_80/bin /sbin/java //创建软连接到sbin 添加环境变量,内容如下(在文件末尾添加):
[root@tomcat1 /]# vi /etc/profile
JAVA_HOME=/java/jdk1.7.0_80 JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export JAVA_HOME JRE_HOME PATH CLASSPATH 使环境变量立即生效,命令如下: [root@tomcat1 /]# source /etc/profile 测试JDK安装是否成功,命令如下: [root@tomcat1 /]# java–version 输出 :
java version \"1.7.0_80\"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) -Bit Server VM (build 24.80-b11, mixed mode) 则安装成功,如果测试失败,检查上述步骤。
6 / 34
1.2.2 Tomcat安装
安装Tomcat7.0.70,命令如下:
[root@tomcat1/]# tar –zxvf apache-tomcat-7.0.70.tar.gz//解压缩到当前路径 启动Tomcat,命令如下:
[root@tomcat1 /]# /apache-tomcat-7.0.70//bin/startup.sh 查看tomcat日志,命令如下:
[root@tomcat1 /]# tail -100f /apache-tomcat-7.0.70/logs/catalina.out 最后一行出现如下内容,说明启动成功:
九月 08, 2016 1:56:53 下午 org.apache.catalina.startup.Catalina start 信息: Server startup in 1638 ms
也可以打开浏览器进行验证,http://192.168.150.108:8080,出现tomcat主页说明启动成功。
停止Tomcat,命令如下:
[root@tomcat1 /]# /apache-tomcat-7.0.70/bin/shutdown.sh
1.3 MySQL部署
在如下两台虚拟机安装mysql: 虚拟机名称 Master1 Master2
真实IP(RIP) 192.168.150.101 192.168.150.100 7 / 34
1.3.1 MySQL安装
查看虚拟机是否已经安装mysql或者mysql组件,如果已经安装卸载它,命令如下: [root@master1 /]#rpm -qa |grep mysql //查找是否已经安装
[root@master1 /]# yum erase –y ******* //卸载已安装的mysql [root@master1 /]# tar -xvf mysql-5.7.9-1.el6.x86_.rpm-bundle.tar //解压安装包 安装myslq(顺序不能颠倒):
[root@master1 /]# rpm–ivh mysql-community-common-5.7.9-1.el6.x86_.rpm [root@master1 /]# rpm–ivh mysql-community-libs-5.7.9-1.el6.x86_.rpm [root@master1 /]# rpm–ivh mysql-community-client-5.7.9-1.el6.x86_.rpm [root@master1 /]# rpm–ivh mysql-community-server-5.7.9-1.el6.x86_.rpm 修改mysql配置文件my.cnf,命令如下: [root@master1 /]# vi /etc/my.cnf 修改内容如下:
[client] #
port=3306
socket=/tmp/mysql.sock default-character-set=utf8 #
[mysqld] #
character-set-server=utf8
collation-server=utf8_general_ci
# Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. default-storage-engine=innodb innodb_buffer_pool_size = 128M innodb_data_home_dir=/mysqldb
innodb_log_group_home_dir =/mysqldb
innodb_data_file_path = ibdata1:100M:autoextend innodb_buffer_pool_size = 256M innodb_log_file_size = 48M innodb_log_buffer_size = 2M innodb_file_per_table = 0 #
8 / 34
# Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin
general-log=ON
general-log_file=/mysqllogs/mysql-log.log log-error = /mysqllogs/mysql-err.err log-bin=/mysqllogs/mysql-bin server-id=1
# Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M
# read_rnd_buffer_size = 2M datadir=/mysqldb
socket=/tmp/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0
#log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid #忽略表和字段的大小写 lower_case_table_names=0
初始化数据库,命令如下:
[root@master1 /]# mysql --initialize //会创建带密码的 root@localhost 账号,密码在 log-error日志文件中 或着创建空密码的命令如下:
[root@master1 /]# mysql--initialize– insecure
注意,本方案修改了my.cnf的data和log的默认存放路径,因此需要修改所有者和执行权限,命令如下:
[root@master1 /]# chown–R mysql:mysql /mysqldb [root@master1 /]# chmod–R 755 /mysqldb
[root@master1 /]# chown–R mysql:mysql /mysqllogs [root@master1 /]# chmod–R 755 /mysqllogs
9 / 34
启动mysql,命令如下:
[root@master1 /]# service mysqld start 加入开机启动
[root@master1 /]# chkconfig mysqld on
第一次登陆mysql需要修改默认密码,命令如下:
[root@master1 /]# mysql –uroot –p******* //******为初始化的密码 登录成功后,提示符变为如下: mysql>
修改默认密码为新密码123456:
mysql>alter user root@localhost identified by '123456';
为了方便修改允许root远程访问,基于安全考虑可以IP地址为局域网段: mysql>create user 'root'@' 192.168.150.%' identified by '123456'; mysql>GRANT ALL PRIVILEGES ON*.* TO 'root'@'192.168.150.%'; 重启Mysqld服务
1.3.2 MySQL常见错误
安装失败提示类似如下错误:
libnuma.so.1()(bit) is needed by mysql-community-server-5.7.9-1.el6.x86_ 需要安装numactl,命令如下: [root@master1 /]# yum install numactl 登录mysql出现类似如下错误:
Table 'performance_schema.session_status' doesn't exist
Table 'performance_schema.session_status' has the wrong structure 解决方法,命令如下:
[root@master1 /]# mysql_upgrade -u root -p –force 然后重启mysqld
10 / 34
1.3.3 MySQL主主同步配置
MySQL的主主同步其实就是互为主从同步,但是需要注意的是自增字段配置。 分别在两台mysql虚拟机创建同步账号,命令如下:
mysql>create user 's_master'@' 192.168.150.%' identified by '123456'; mysql>GRANT REPLICATION SLAVE ON*.* TO 'root'@'192.168.150.%'; 分别修改两台虚机上的my.cnf配置文件中的[mysqld]节点。 Master1的my.cnf修改如下:
server-id=1 //给数据库服务的唯一标识 binlog-do-db = spcdb //要同步的数据库
relay_log_recovery //宕机后如relay_log损坏,重新从master上获取日志 log-slave-updates//更新自己的log日志,主主必须配置 slave-skip-errors=all//跳过同步错误,否则将出现终止
auto_increment_offset = 1//主主同步防止自增字段冲突,每个master分别为1、2 auto_increment_increment = 2//主主同步防止自增,有几台master就设置为几
Master2的my.cnf修改如下:
server-id=2 //给数据库服务的唯一标识 binlog-do-db = spcdb //要同步的数据库
relay_log_recovery//宕机后如relay_log损坏,重新从master上获取日志 log-slave-updates//更新自己的log日志,主主必须配置 slave-skip-errors=all//跳过同步错误,否则将出现终止 auto_increment_offset = 2//主主同步配置防止自增字段冲突,
auto_increment_increment = 2//主主同步配置防有几台master就设置为几
11 / 34
设置好后分别重启mysqld服务
登录master1 mysql控制台,开启同步,命令如下:
mysql>change master to master_host='192.168.150.100', master_port=3306,
master_user='s_master', master_password='123456', master_log_file='mysql-bin.000011', master_log_pos=623; mysql> start slave;
说明:master_log_file='mysql-bin.000011'参数和master_log_pos=623参数,需要查看master2上mysql的内容,命令为 mysql> show master status; 登录master2 mysql控制台,开启同步,命令如下:
mysql>change master to master_host='192.168.150.101', master_port=3306,
master_user='s_master', master_password='123456', master_log_file='mysql-bin.000011', master_log_pos=623; mysql> start slave;
说明:master_log_file='mysql-bin.000011'参数和master_log_pos=623参数,需要查看master1上mysql的内容,命令为 mysql> show master status;
验证主主同步配置成功,分别在两台master进行数据库写操作,看看是否互相同步数据。如果没有同步成功,检查以上配置。主主同步的原理就是互为主从同步,查看maste的ip是否配置正确,查看同步配置使用命令为show slave status \\G。
1.4 LVS+Keepalived部署
在如下虚拟机上安装: 虚拟机名称 Keepalived1 Keepalived2
12 / 34
真实IP(RIP) 192.168.150.106 192.168.150.107 1.4.1 LVS安装
安装前需要查看内核版本,命令如下: [root@keepalived1 /]# uname -rm 显示2.6.32-2.4.2.el6.x86_ x86_
下载支持该内核版本的ipvsadm:ipvsadm-1.26.tar.gz 查看系统是否加载ip_vs,命令如下:
[root@keepalived1 /]# lsmod |grep ip_vs ip_vs_rr 1420 3
ip_vs 1267 5 ip_vs_rr libcrc32c 1246 1 ip_vs ipv6 336282 16
ip_vs,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6
先把目录/usr/src/kernels/2.6.32-2.4.2.el6.x86_链接为/usr/src/linux,命令如下: [root@keepalived1 /]# ln–s /usr/src/kernels/2.6.32-2.4.2.el6.x86_/usr/src/linux 安装lpvsadm的编译依赖,命令如下: [root@keepalived1 /]# yum install libnl* libpopt* [root@keepalived1 /]# yum install popt-static
在ipvsadm-1.26的目录下,运行make和make install进行ipvsadm的编译安装。 由于我们通过keepalived进行负载均衡配置,因此lvs不用进行配置。
1.4.2 LVS调优
IPVS的路由连接表默认为ip_vs_conn_tab_bits=12(2的12次方4096),如果并发连接数高就会出先哈希冲突,但是不会对功能造成影响,会稍微影响下性能。因为目前服务器内存够大,因此我们设置成最大值ip_vs_conn_tab_bits=20,调整ip_vs_conn_tab_bits的值有两种方法对于新的IPVS代码可以通过配置文件进行调成,对于老的IPVS需要重新编译内核进行调整。本方案中可以通过配置进行调整,设置方法如下: 查看是否能通过配置参数调整,命令如下:
13 / 34
[root@keepalived1 /]# modinfo -p ip_vs conn_tab_bits:Set connections' hash size
显示上面的conn_tab_bits说明可以进行调整,调整方法如下:
在/etc/modprobe.d/目录下添加文件ip_vs.conf,内容为:options ip_vs conn_tab_bits=20,命令如下:
[root@keepalived1 /]# vi /etc/modprobe.d/ip_vs.conf options ip_vs conn_tab_bits=20
重新加载,命令如下:
[root@keepalived1 /]# modprobe -r ip_vs [root@keepalived1 /]# modprobe ip_vs 查看参数生效,命令如下:
[root@keepalived1 /]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=1048576)
引用http://59949.htmlfyxspgpw.blog.chinaunix.net/uid-20653538-id-3203122.html
1.4.3 Keepalived安装
keepalived的编译安装依赖openssl-devel,先安装openssl-devel,命令如下: [root@keepalived1 /]# yum install openssl-devel 解压缩keepalived源码,命令如下:
[root@keepalived1 /]# tar–xvf keepalived-1.2.23.tar.gz
进入到源码目录,执行预编译设置,安装到根路径下的keepalived目录中,命令如下: [root@keepalived1 keepalived-1.2.23]# ./configure –prefix /keepalived/ [root@keepalived1 keepalived-1.2.23]# make
[root@keepalived1 keepalived-1.2.23]# make install 复制配置文件和执行文件,命令如下:
[root@keepalived1 /]# cp -r /keepalived/etc/keepalived /etc
[root@keepalived1 /]# cp -r /keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ [root@keepalived1 /]# cp -r /keepalived/etc/sysconfig/keepalived /etc/sysconfig/ [root@keepalived1 /]# cp -r /keepalived/sbin/keepalived /usr/sbin/
14 / 34
1.4.4 Keepalived配置
修改/etc/keepalived/keepalived.conf文件,keepalived1为主,keepalived2为备,配置文件中只有两处有区别,其他没有区别,内容如下: global_defs {
router_id LVS_DEVEL
vrrp_skip_check_adv_addr vrrp_strict
vrrp_garp_interval 0 vrrp_gna_interval 0 }
vrrp_instance VI_1 {
state MASTER //主设置为MASTER,备设置为BACKUP interface eth1//监控的网卡 virtual_router_id 51 //主备保持一致
priority 100 //主要比备大,主为100,备为90 advert_int 1 authentication { auth_type PASS
auth_pass 9876 //主备保持一致 }
virtual_ipaddress { //虚拟IP地址 192.168.150.200/24 192.168.150.202/24 } }
//tomcat负载均衡配置
virtual_server 192.168.150.200 8080 { delay_loop 6 lb_algo rr //轮询算法 lb_kind DR //采用DR模式
15 / 34
persistence_timeout 0 //保持时间,为了看负载均衡效果设置为0 protocol TCP
real_server 192.168.150.108 8080 { weight 1
TCP_CHECK {
connect_timeout 5 connect_port 8080 } }
real_server 192.168.150.109 8080 { weight 1
TCP_CHECK {
connect_timeout 5 connect_port 8080 } } }
//MySQL负载均衡配置
virtual_server 192.168.150.202 3306 { delay_loop 6 lb_algo rr lb_kind DR
persistence_timeout 50 protocol TCP
real_server 192.168.150.100 3306 { weight 1
TCP_CHECK { connect_timeout 5 connect_port 3306 } }
real_server 192.168.150.101 3306 { weight 1
TCP_CHECK { connect_timeout 5 connect_port 3306 } } } 16 / 34
1.4.5 负载均衡Tomcat配置
需要Tomcat和MySQL响应VIP的处理需要分别在这4台虚机上的lo回路上设置VIP,分别执行以下脚本:
Tomcat的执行脚本/lvs_realserver.sh 内容如下: [root@tomcat1 /]# cat lvs_realserver.sh #!/bin/bash #
# Script to start LVS DR real server. # description: LVS DR real server #
. /etc/rc.d/init.d/functions
VIP=192.168.150.200 //该处设置虚拟ip
host=`/bin/hostname` case \"$1\" in start)
# Start LVS-DR real server on this machine. /sbin/ifconfig lo down /sbin/ifconfig lo up
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
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up /sbin/route add -host $VIP dev lo:0 ;; stop)
# Stop LVS-DR real server loopback device(s). /sbin/ifconfig lo:0 down
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 ;;
status)
# Status of LVS-DR real server.
islothere=`/sbin/ifconfig lo:0 | grep $VIP`
isrothere=`netstat -rn | grep \"lo:0\" | grep $VIP` if [ ! \"$islothere\" -o ! \"isrothere\" ];then
17 / 34
# Either the route or the lo:0 device # not found.
echo \"LVS-DR real server Stopped.\" else
echo \"LVS-DR real server Running.\" fi ;; *)
# Invalid entry.
echo \"$0: Usage: $0 {start|status|stop}\" exit 1 ;; esac exit 0
设置脚本执行权限,命令如下:
[root@tomcat1 /]# chmod -R 755 lvs_realserver.sh 执行脚本,命令如下:
[root@tomcat1 /]# ./lvs_realserver.sh 查看是否绑定VIP,命令如下:
[root@tomcat1 /]# ifconfig–a
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:4000 errors:0 dropped:0 overruns:0 frame:0 TX packets:4000 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0
RX bytes:753600 (735.9 KiB) TX bytes:753600 (735.9 KiB)
lo:0 Link encap:Local Loopback
inet addr:192.168.150.200 Mask:255.255.255.255
UP LOOPBACK RUNNING MTU:65536 Metric:1
1.4.6 负载均衡MySQL配置
需要MySQL响应VIP的处理需要分别在这2台虚机上的lo回路上设置VIP,分别执行以
18 / 34
下脚本:
MySQL的执行脚本/lvs_realserver.sh 内容如下: [root@master1 /]# cat lvs_realserver.sh #!/bin/bash #
# Script to start LVS DR real server. # description: LVS DR real server #
. /etc/rc.d/init.d/functions VIP=192.168.150.202 //虚拟IP
host=`/bin/hostname` case \"$1\" in start)
# Start LVS-DR real server on this machine. /sbin/ifconfig lo down /sbin/ifconfig lo up
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
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up /sbin/route add -host $VIP dev lo:0 ;; stop)
# Stop LVS-DR real server loopback device(s). /sbin/ifconfig lo:0 down
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 ;;
status)
# Status of LVS-DR real server.
islothere=`/sbin/ifconfig lo:0 | grep $VIP`
isrothere=`netstat -rn | grep \"lo:0\" | grep $VIP` if [ ! \"$islothere\" -o ! \"isrothere\" ];then
# Either the route or the lo:0 device # not found.
echo \"LVS-DR real server Stopped.\" else
echo \"LVS-DR real server Running.\"
19 / 34
fi ;; *)
# Invalid entry.
echo \"$0: Usage: $0 {start|status|stop}\" exit 1 ;; esac exit 0
设置脚本执行权限,命令如下:
[root@maste1 /]# chmod -R 755 lvs_realserver.sh 执行脚本,命令如下:
[root@maste1 /]# ./lvs_realserver.sh 查看是否绑定VIP,命令如下:
[root@maste1 /]# ifconfig –a
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:4000 errors:0 dropped:0 overruns:0 frame:0 TX packets:4000 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0
RX bytes:753600 (735.9 KiB) TX bytes:753600 (735.9 KiB)
lo:0 Link encap:Local Loopback
inet addr:192.168.150.202 Mask:255.255.255.255
UP LOOPBACK RUNNING MTU:65536 Metric:1
1.5 方案总结
该方案每个节点均配置了高可用,tomcat和mysql还可以负载均衡,keepalived
没有做成互为主备模式,机器正常运行时,所有的外部链接都由keepalived1进行路由转接,此时keepalived2相当于闲置,如果要把leepalived2利用起来,就要做成主备模式,
20 / 34
提供两个vip进行web访问。
1.6 虚拟机配置文件 1.6.1
Mysql配置文件
my.cnf.master1my.cnf.master21.6.2 keepalived配置文件
keepalived.conf.keepalived1
keepalived.conf.keepalived221 / 34
2 方案二构架图
本方案架构采用10台虚拟机进行,相对方案一增加了Mysql的主从复制和读写分离,采用amoeba的mysql中间件进行读写分离和负载均衡。构架图如下图示:
Session同步VIP192.168.150.200Tomcat1Ip:192.168.150.108Tomcat2Ip:192.168.150.109VIPVIPVIPTomcatVIP192.168.150.200Keepalived1Ip:192.168.150.106LVS+KeepalivedAmoebaVIP192.168.150.201VIP192.168.150.201Amoeba-1Ip:192.168.150.104写写写写Amoeba-2Ip:192.168.150.105Keepalived2Ip:192.168.150.107读读Master-2Ip:192.168.150.100读同步主主同步Master-1Ip:192.168.150.101同步读Slave-2Ip:192.168.150.102Slave-1Ip:192.168.150.102
2.1 准备工作 2.1.1 软件列表
ipvsadm-1.26.tar.gz keepalived-1.2.23.tar.gz 22 / 34
amoeba-mysql-3.0.5-RC-distribution.zip apache-tomcat-7.0.70.tar.gz jdk-7u80-linux-x.tar.gz mysql-5.7.9-1.el6.x86_.rpm-bundle.tar CentOS-6.6-x86_-minimal.iso 2.1.2 虚拟机列表
虚拟机名称 Tomcat1 Tomcat2 Keepalived1 Keepalived2 amoeba1 amoeba2 Master1 Master2 Slave1 Slave2 真实IP(RIP) 192.168.150.108 192.168.150.109 192.168.150.106 192.168.150.107 192.168.150.104 192.168.150.105 192.168.150.101 192.168.150.100 192.168.150.102 192.168.150.103 虚拟IP(VIP) Lo:192.168.150.200/32 192.168.150.200/24 192.168.150.201/24 Lo: 备注 192.168.150.201/32 2.1.3 虚拟机设置
所有虚拟机关闭selinux,命令如下: [root@tomcat1 /]# vi /etc/sysconfig/selinux 修改为:SELINUX=disable
23 / 34
所有虚拟机关闭iptables,命令如下: [root@tomcat1 /]# service iptables stop [root@tomcat1 /]# chkconfig iptables off 然后重启虚拟机。
2.2 Tomcat部署
在如下两台虚拟机安装: 虚拟机名称 Tomcat1 Tomcat2 真实IP(RIP) 192.168.150.108 192.168.150.109 2.2.1 JDK安装
同方案一的JDK安装
2.2.2 Tomcat安装
同方案一的Tomcat安装
2.3 MySQL部署
在如下四虚拟机安装mysql: 虚拟机名称 Master1 Master2 Slave1 真实IP(RIP) 192.168.150.101 192.168.150.100 192.168.150.102 24 / 34
Slave2 192.168.150.103 2.3.1 MySQL安装
同方案一的MySQL安装
2.3.2 MySQL常见错误
同方案一
2.3.3 MySQL主主同步配置
同方案一的MySQL配置
2.3.4 MySQL主从同步配置
分别对Master1和Slave1做主从同步,Master2和Slave2做主从同步。为了区分Master1和Master2的主主同步,分别在Master1和Master2上创建主从同步账号s_user。命令如下:
mysql>create user 's_slave'@' 192.168.150.%' identified by '123456'; mysql>GRANT REPLICATION SLAVE ON*.* TO 'root'@'192.168.150.%'; Slave1和Slave2的my.cnf修改如下:
server-id=2//给数据库服务的唯一标识slave1为2,slave2为3 binlog-do-db = spcdb //要同步的数据库
relay_log_recovery //宕机后如relay_log损坏,重新从master上获取日志 log-slave-updates//更新自己的log日志,主主必须配置 slave-skip-errors=all//跳过同步错误,否则将出现终止 设置好后分别重启mysqld服务
25 / 34
登录slave1 mysql控制台,开启同步,命令如下:
mysql>change master to master_host='192.168.150.101', master_port=3306,
master_user='s_slave', master_password='123456', master_log_file='mysql-bin.000011', master_log_pos=623; mysql> start slave;
登录slave2 mysql控制台,开启同步,命令如下:
mysql>change master to master_host='192.168.150.100', master_port=3306,
master_user='s_master', master_password='123456', master_log_file='mysql-bin.000011', master_log_pos=623; mysql> start slave;
说明:master_log_file='mysql-bin.000011'参数和master_log_pos=623参数,需要查看master1上mysql的内容,命令为 mysql> show master status;
2.4 Amoeba部署
在如下两虚拟机安装amoeba: 虚拟机名称 amoeba1 amoeba2
真实IP(RIP) 192.168.150.104 192.168.150.105 2.4.1 Amoeba安装
安装amoeba-mysql-3.0.5,命令如下:
[root@amoeba1 /]# unzip amoeba-mysql-3.0.5-RC-distribution.zip //解压缩 启动amoeba,命令如下:
[root@amoeba1 /]# /amoeba-mysql-3.0.5-RC/bin/launcher 停止amoeba,命令如下:
26 / 34
[root@amoeba1 /]# /amoeba-mysql-3.0.5-RC/bin/launcher
2.4.2 Amoeba配置
主要配置xml为dbServers.xml和amoeba.xml,两个文件在
/amoeba-mysql-3.0.5-RC/conf/路径下,amoeba1和amoeba2的配置相同。 dbServers.xml配置节点如下:
配置后端mysql数据库的相同的参数如:端口号、默认数据库、用户名和密码。
27 / 34
配置负载均衡,此处配置两个,分别负责读写。slaves负责读数据,masters负责写数据。
配置代理的端口号,以及登录的用户和密码
28 / 34
29 / 34
引用http://docs.hexnova.com/amoeba/index.html
2.4.3 负载均衡Amoeba配置
需要Amoeba响应VIP的处理需要分别在这2台虚机上的lo回路上设置VIP,分别执行以下脚本:
Amoeba的执行脚本/lvs_realserver.sh 内容如下: [root@amoeba1 /]# cat lvs_realserver.sh #!/bin/bash #
# Script to start LVS DR real server. # description: LVS DR real server #
. /etc/rc.d/init.d/functions VIP=192.168.150.201 //虚拟ip
host=`/bin/hostname` case \"$1\" in start)
# Start LVS-DR real server on this machine. /sbin/ifconfig lo down /sbin/ifconfig lo up
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
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up /sbin/route add -host $VIP dev lo:0 ;; stop)
# Stop LVS-DR real server loopback device(s). /sbin/ifconfig lo:0 down
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
30 / 34
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce ;;
status)
# Status of LVS-DR real server.
islothere=`/sbin/ifconfig lo:0 | grep $VIP`
isrothere=`netstat -rn | grep \"lo:0\" | grep $VIP` if [ ! \"$islothere\" -o ! \"isrothere\" ];then
# Either the route or the lo:0 device # not found.
echo \"LVS-DR real server Stopped.\" else
echo \"LVS-DR real server Running.\" fi ;; *)
# Invalid entry.
echo \"$0: Usage: $0 {start|status|stop}\" exit 1 ;; esac exit 0
设置脚本执行权限,命令如下:
[root@amoeba1 /]# chmod -R 755 lvs_realserver.sh 执行脚本,命令如下:
[root@amoeba1 /]# ./lvs_realserver.sh 查看是否绑定VIP,命令如下:
[root@amoeba1 /]# ifconfig –a
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:4000 errors:0 dropped:0 overruns:0 frame:0 TX packets:4000 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0
RX bytes:753600 (735.9 KiB) TX bytes:753600 (735.9 KiB)
lo:0 Link encap:Local Loopback
inet addr:192.168.150.201 Mask:255.255.255.255
31 / 34
UP LOOPBACK RUNNING MTU:65536 Metric:1
2.5 方案总结
本方案增加了mysql的读写分离和主从同步,采用了amoeba的中间代理,没有使用atlas、mysql proxy、cobar、mysql cluster,主要由于amoeba配置简单,使用方便。
本方案有一个缺点就是如果master宕掉其中一个后,对另外一个master进行写数据后,再做读数据时,有一定的几率读到宕掉的那个台master下的slave上,会造成读不到刚写入的数据。由于Mysql的主从同步不支持多主一从,网上的多主一从配置是应用在数据备份环境中,在备份机上启动多个mysql实例,但是每个实例还是对应一台master。
有一个变通的办法就是在slave上创建MyISAM存储引擎的数据表,两个mysql实例指向同一个data。由于本实验的mysql都是采用的InnoDB存储引擎,因此没有验证该方法是否可行。
2.6 虚拟机配置文件 2.6.1
Mysql配置文件
my.cnf.master1my.cnf.master2my.cnf.slave1my.cnf.slave2
2.6.2 Amoeba配置文件
amoeba.xmldbServers.xml
32 / 34
2.6.3 keepalived配置文件
keepalived.conf.keepalived1keepalived.conf.keepalived2
33 / 34
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo3.cn 版权所有 湘ICP备2023017654号-3
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务