LVS+MariaDB+Galera 环境搭建


如果转发请注明出处,谢谢


前言

由于设备有限,所以只能用自己的笔记本搭建环境,以下为搭建中遇到的问题和步骤,鸣谢给予帮助的三个朋友。文章由于是自己的理解总结,所有有错误之处欢迎大家指出。

本机配置:

系统: windows 7

内存:  12G

文档中的需要的安装包,请到 http://pan.baidu.com/s/1ntzPLBb 下载,下载码:58zf

一.硬件设备

虚拟机:VMware® Workstation 10.0.0 build-1295980

LVS: Red HatEnterprise Linux Server release 6.5 (Santiago)

DB1: CentOSrelease 6.4 (Final)

DB2: CentOSrelease 6.4 (Final)

 

这里安装虚拟机的步骤我就不复述了,在装好了三台虚拟机之后,先进行DB服务的安装,这个顺序没有规定,可以现装LVS。

 

二.安装DB服务器(mariadb+galera)

以下内容为网上找的参考,原出处为:http://634871.blog.51cto.com/624871/1350082?utm_source=tuicool,但其中有些问题,本文档中会对应做出修改

 

1.  环境描述

DB1_IP:192.168.5.132

DB2_IP:192.168.5.130

(如果不知道自己的IP,可用ip a查看)

 

2.  配置mariadb的yum源(以下内容两台服务器都需要同样的操作)

<1>. 先将要下载的源信息写入,执行命令: vim /etc/yum.repos.d/mariadb.repo

写入以下内容:

# yum源的内容如下:

[mariadb]

name = MariaDB

baseurl =http://yum.mariadb.org/5.5/rhel6-amd64

enabled = 1

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=1

 

<2>. 编辑完文件,执行命令: yum makecache

yum makecache 是 将服务器上的软件包信息 现在本地缓存,以提高 搜索 安装软件的速度

3.  安装 MariaDB-Galera-server galera MariaDB-client

执行命令:yum -y install MariaDB-Galera-server galeraMariaDB-client

 

注:由于下载的链接是国外的,速度很慢,会有下载失败报错的情况,如果出现该情况,请重新执行该命令,之后最后全部下载完成,下载完成后会自动安装,最后出现complete的结束语。

 

4.  编辑每台机器的hosts文件,添加如下内容

编辑每台机器的hosts文件,执行命令:  vim /etc/hosts, 地址为搭建db服务器的地址,请修改成自己的IP。

192.168.5.132 node1

192.168.5.130 node2


# 启动测试一下,执行命令:/etc/init.d/mysql start

 Starting MySQL.... SUCCESS!

如果有success表示成功启动,执行命令: chkconfigmysql on可以开机自动启动mysql。

 

5.  设置MariaDB的root密码,并做安全加固

<1>. 执行命令:/usr/bin/mysql_secure_installation,执行之后会询问让你设置数据库root密码,以及是否删除远程用户等信息,如果不懂的话,可以复制下来百度翻译下,对于数据库的影响不大。

<2>. # 登陆数据库,授权用于集群同步的用户和密码

执行命令: mysql -uroot–pkongzhong(用法为mysql –u 用户–p密码,注意密码与p之间没有空格)

mysql> GRANTUSAGE ON *.* to sst@'%' IDENTIFIED BY 'sstpass123';

mysql> GRANTALL PRIVILEGES on *.* to sst@'%';

mysql> FLUSHPRIVILEGES;

mysql> quit

<3>.创建并配置wsrep.cnf文件

[root@node1 /]# cp /usr/share/mysql/wsrep.cnf  /etc/my.cnf.d/

[root@node1 /]# vim /etc/my.cnf.d/wsrep.cnf

# 只需要修改如下4行:

wsrep_provider=/usr/lib64/galera/libgalera_smm.so

wsrep_cluster_address="gcomm://192.168.5.130:4567,192.168.5.132:4567"

wsrep_sst_auth=sst:sstpass123

wsrep_sst_method=rsync

 

6.  确认本机防火墙上开放了所需TCP 3306和TCP 4567的端口[也可以关闭防火墙]

<1. > 设置允许访问的端口

[root@node1 /]#iptables -A INPUT -i eth0 -p tcp --dport 3306 -j ACCEPT

[root@node1/]#  iptables -A INPUT -i eth0 -p tcp--dport 4567 -j ACCEPT

# 启动mariadb,查看3306和4567端口是否被监听

[root@client137~]# /etc/init.d/mysql restart

[root@client137~]# netstat -tulpn |grep -e 4567 -e 3306

 tcp       0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      32363/mysqld

 tcp       0      0 0.0.0.0:4567                0.0.0.0:*                   LISTEN      32363/mysqld

 

<2>. 如果执行命令/etc/init.d/mysqlrestart,显示数据库启动失败,请执行命令:vi /etc/sysconfig/selinux 修改为disabled


<3>. Linux下查看、关闭及开启防火墙命令:

1)永久性生效,重启后不会复原

开启: chkconfig iptables on 关闭: chkconfigiptables off

2)即时生效,重启后复原

开启: service iptables start 关闭: service iptablesstop

 

额外讲解:SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。Disabled就不用说了,permissive就是Selinux有效,但是即使你违反了策略的话它让你继续操作,但是把你的违反的内容记录下来。在我们开发策略的时候非常的有用。Enforcing就是你违反了策略,你就无法继续操作下去。如果要修改成disabled,需要重启才能生效

 

<4>. 如果还没有启动成功,那继续执行以下操作,执行命令: cd /var/lib/mysql , 进到mysql的目录,

 

将文件删除,删除 galera集群状态的缓存文件   mysql.sock就是连接数据库的socket文件 每次开启服务就会产生 但假如说服务停止了也在 就不正常 必须删了 再开服务 才对的

rm -f mysql.sock

rm -f galera.cache

<5>. 删除后,查看mysql数据库状态,杀掉启动的进程

service mysql status

pkill -9 mysqld

pkill -9 mysql

pkill -9 MariaDB

<6>. 设置防火墙

iptables –L 

命令 -L, --list

说明 列出某规则链中的所有规则。

 

iptables –F

命令 -F, --flush

说明 删除某规则链(这里是INPUT规则链)中的所有规则。

 

service iptablessave

保存防火墙设置

 

service mysqlstart

 

如果还启动失败的话,启动数据库集群,在执行命令:

/etc/init.d/mysqlbootstrap

 

<6>. 服务启动成功后,在db1上建立数据库,db2查看,如果有同步表明设置成功。

有关mysql的命令:

         mysql–u root –proot

         建立数据库 createdatabase testdb;

         查看数据库 showdatabases;

推荐用客户端Navicat工具

 

就此Mariadb+galera数据库集群搭建完毕

 

三. 搭建LVS(基于ipvsadm+keepalive)

1. IPVS安装

         <1>.命令检查kernel是否已经支持LVS的ipvs模块:

执行命令:modprobe -l|grep ipvs


如果有类似上面的输出,表明系统内核已经默认支持了IPVS模块。接着就可以安装IPVS管理软件了。

 

<2>. 安装IPVS

         tar zxvf ipvsadm-1.26.tar.gz

cd ipvsadm-1.26

make

make install

        

         <3>.如果出现报错,检查环境:

ip_vs.h:15:29: error: netlink/netlink.h: Nosuch file or directory

ip_vs.h:16:31: error: netlink/genl/genl.h:No such file or directory

ip_vs.h:17:31: error: netlink/genl/ctrl.h:No such file or directory

………报错信息很多就不一一粘贴了

         执行命令:

rpm -qa | greppopt 

popt-1.13-7.el6.x86_64

popt-devel-1.13-7.el6.x86_64 

rpm -qa | greplibnl 

libnl-1.1-14.el6.x86_64

libnl-devel-1.1-14.el6.x86_64

执行这两条命令之后,会有对应的查询结果,我当时的环境没有popt-devel-1.13-7.el6.x86_64和libnl-devel-1.1-14.el6.x86_64,并且libnl的版本不对,因此重新下载对应的两个包,注意,devel的包的版本号一定要跟你自己的查询结果一样,否则还是会报错,安装时会告诉你需要依赖。如果你执行命令后,每个命令都有两个就没问题了,不用下载安装了。

         <4>.重新进行make,还会出现错误,但是相比之前少了很多。


需要安装popt-static

popt-static-1.13-7.el6.x86_64.rpm 

rpm -ivhpopt-static-1.13-7.el6.x86_64.rpm 

安装完成后使用命令ipvsadm,检查安装是否成功。

 

2. Keepalive安装

1. tar -xvf keepalived-1.2.12.tar.gz

2. ./configure

3. make

4. make install

5. cp/usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

6. cp/usr/local/etc/sysconfig/keepalived /etc/sysconfig/

7. mkdir/etc/keepalived

8. cp/usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

9. cp/usr/local/sbin/keepalived /usr/sbin/

 

配置keepalived开机启动

chkconfigkeepalived on

 

3. 配置keepalive

<1>. vim/etc/keepalived/keepalived.conf

 

只需要修改部分内容:

router_id LVS_MASTER #备节点 修改为LVS_SLAVE,如果没有备机,可以不用修改

模块vrrp_instance VI_1中

virtual_ipaddress{

       192.168.5.140  #该地址是你需要对外映射的虚地址,需要修改

}

例如:

修改了虚地址的话,下面的默认的虚地址模块对应也要修改,例如:

virtual_server 192.168.5.140 3306,完了将你自己的数据库实地址,配置在real_server里,其他没用的可以删除,文件默认有三个虚拟地址,如果用不到,可以删除。

 

<2>. 启动keepalive:

/etc/init.d/keepalived start 

/etc/init.d/keepalived restart 设置成自启动:

vim /etc/rc.local //里面添加/etc/init.d/keepalived restart /etc/lvsdr.sh start

 

<3>. 查看,执行命令:ipvsadm –ln

 

<4>. 开启转发,执行命令:echo"1" >/proc/sys/net/ipv4/ip_forward,此语句,如果网卡重启,或者服务器重启,需要重新执行。

 

<5>. LVS端配置完成后,切换到DB服务器上,当前目录下,执行命令: vi lvs.sh(目录根据自己喜好可以随便,不一定是当前目录,文件名也可以自己定义),编辑以下内容:(该文件网盘中也有,切记把LVS_VIP地址改成LVS的虚地址

#!/bin/bash 

# description: Config realserver 

LVS_VIP=192.168.5.140

/etc/rc.d/init.d/functions 

case "$1" in 

start) 

/sbin/ifconfig lo:0 $LVS_VIP netmask255.255.255.255 broadcast $LVS_VIP 

/sbin/route add -host $LVS_VIP devlo:0 

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 

sysctl -p >/dev/null 2>&1 

echo "RealServer Vipadded:$LVS_VIP  !" 

;; 

stop) 

/sbin/ifconfig lo:0 down 

/sbin/route del $LVS_VIP >/dev/null2>&1 

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 

echo "RealServer Vipremoved:$LVS_VIP  !" 

;; 

status)

# Status of LVS-DR real server. 

islothere=`/sbin/ifconfig lo:0 | grep$LVS_VIP`

isrothere=`netstat -rn | grep"lo:0" | grep $LVS_VIP`

if [ ! "$islothere" -o !"isrothere" ];

then # Either the route or the lo:0device  # not found. 

echo "Your LVS-DR VIP:$LVS_VIP isOFF,the LVS-Server can't find you,please reset your VIP!"

else

echo "Your LVS-DR VIP:$LVS_VIP isON,real server running!"

fi

;;

*) 

echo "Usage: $0{start|stop|status}" 

exit 1 

esac 

exit 0 

 

 

 

<6>. 编辑保存后,执行命令: chmod +xlvs.sh 修改权限,完了根据文件目录,执行命令: /lvs.sh start (记得要跟全路径,用法有start stop status三种)成功启动后,显示如下:


执行命令:ip a,查看是否存在你LVS的虚地址,如果有了,就可以进行对lvs的虚地址发送请求了,赶紧快去试试吧。

 

四.相关问题和配置

1.      由于lvs.sh 需要每次重启后都要执行一遍,因此可以放在启动项里,具体操作如下:

执行命令: echo "/lvs.sh start" >> /etc/rc.local ,注意要lvs.sh全路径

2.      每次数据库服务器重启之后,也需要重新把数据库集群启动,执行:/etc/init.d/mysql bootstrap 即可

3.      每次lvs服务器启动,或者网卡重启,需要重新执行:echo "1" >/proc/sys/net/ipv4/ip_forward

4.      查看服务端口是否启动监听状态,可执行命令:netstat -ntlp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值