设为首页 收藏本站
查看: 2924|回复: 0

[经验分享] 通过LVS实现WEB站点的mysql高可用

[复制链接]

尚未签到

发表于 2018-9-27 08:56:54 | 显示全部楼层 |阅读模式
  在一个网站架构中 只要有服务器的存在就必须要在确定架构的安全,在企业和网站中 数据库的作用是至关重要的,因此对数据库的两个重要的操作就是备份和提升其性能
  备份有mysql自带的mysqldump 在有优点的同时也存在着缺点,就是读写的差异,由于大多数网站的数据库是读取多于写入,所以这里做了一个读取的从属服务器的LVS对写入
  数据库的操作让它去找主服务器 然后主从服务器做一个AB复制同步 在这里还要在apache搭建一个论坛用来测试
  实验环境:vmware 9.0 RHEL5.5
  实验所需软件包:mysql-w-r.tar.gz Discuz_7.2_FULL_SC_UTF8.zip
  为避免干扰 实验开始前关闭selinux功能 配置好IP地址和本地Yum源
  实验所需机器最少7台
  实验的拓扑图如下

  分别给三个用户安装三个论坛关联三个数据库每一个用户只对一个数据库有操作权限 对别的数据库没有操作权限
  APACHE服务器的配置
  1 安装httpd服务 php服务
  yum –y install httpd php php-mysql
  2 vim /etc/httpd/conf/httpd.conf

  3 开启apache 服务
  service httpd restart
  4 这里我们不做DNS的配置只是在客户机的hosts文件中手动输入域名所对应的IP

  这样在浏览器中输入域名就可以正常访问了 做完了apache准备部分再去做mysql 然后再去装discuz关联数据库
  在mysql主服务器A上设置
  1 yum –y install mysql-server mysql
  2 初始化mysql数据库
  service mysqld restart
  3 因为在本机数据库进行操作所以不需要输入用户名和密码 在输入命令的时候只需要输入mysql就可以进入数据库
  #mysql
  mysql的数据库文件存放在/var/lib/mysql目录下
  4 新建三个库分别为a,b,c

  5 在a,b,c库下分别新建三个表a,b,c

  6 在三个表中插入输入
  mysql>use a;

  这时再做mysql的主从服务器
  在A服务器上需要做如下配置
  1 vim /etc/my.cnf

  server_id = 1
  log-bin=binlog
  log-bin-index=binlog.index
  编辑完成之后重启服务让配置生效

  2 GRANT replication slave ON *.* TO 'kyo'@'%'>
  GRANT all privileges ON a.* TO 'baidu'@'%'>
  GRANT all privileges ON b.* TO 'sina'@'%'>
  GRANT all privileges ON c.* TO 'yahoo'@'%'>  3 mysql> flush privileges;
  #mysqldump -A -x > /tmp/full.sql 数据库备份到/tmp下
  4 #scp /tmp/full.sql root@slaveip:/tmp/    ----------这里我的slaveip是192.168.1.101 所以IP写192.168.1.101就可以了
  5 这时如果数据库有写操作要对数据库加锁
  mysql> flush tables with read lock;
  如果没有写操作可以省掉这一步
  6 mysql> show master status;  显示主数据库服务器的状态

  最后一步解锁数据库表
  记住这个Position号码和File名字 一会要用到
  在BMain服务器中的操作
  1 安装mysql-server
  yum –y install mysql-server
  2 启动服务
  service mysqld restart
  3 编辑配置文件
  vim /etc/my.cnf
  server_id = 2
  relay_log = /var/lib/mysql/mysql-relay-bin
  relay_log_index=/var/lib/mysql/mysql-relay-bin.index

  4 重启服务使配置生效
  service mysqld restart
  #mysql < /tmp/full.sql
  5 进入mysql数据库
  mysql> change master to master_host='192.168.1.100', master_port=3306, master_user='kyo', master_password='123', master_log_file='binlog.000001',master_log_pos=366;------------------------------在这里要注意的是master的IP地址和端口还有文件名和Position
  mysql> start slave;--------------启动slave
  mysql> show slave status \G
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes
  只要有这两个模块处于YES状态就表示从属服务器就成功了
  这时我们再去配置另一个从属服务器 这次要用另一种方式
  1 前面安装和启动方式都同BMain一样 修改配置文件在server_id = 3即可
  再从BMain中拷贝full.sql和mysql目录下的master.info 需要说明的是master.info文件记录着连接上述主服务器的配置信息

  第三行就是position位置 由于我插入删除表操作使position位置发生变化 具体以自己实验为标准
  2 scp root@192.168.1.101:/var/lib/mysql/master.info /var/lib/mysql/master.info
  scp root@192.168.1.101:/tmp/full.sql /tmp/full.sql
  由于master.info文件不具有权限需要赋权
  chown mysql.mysql /var/lib/mysql/master.info –R
  #mysql < /tmp/full.sql
  重启服务后开启slave

  LVS
  做完了mysql的主从服务再对两个从属服务器做一个负载均衡
  在LVS上做如下配置
  mount /dev/cdrom /mnt
  #rpm -ivh /mnt/Cluster/ipvsadm-1.24-10.i386.rpm
  如果要做mysql的负载均衡的话要知道它的端口号 3306
  LVS#ipvsadm -A -t 192.168.1.200:3306 -s rr
  LVS#ipvsadm -a -t 192.168.1.200:3306 -r 192.168.1.101 -g
  LVS#ipvsadm -a -t 192.168.1.200:3306 -r 192.168.1.102 –g
  LVS#ifconfig eth0:1 192.168.1.200  -----------做一个虚拟网卡VIP
  在BMain中和BBak中分别做如下配置
  #ifconfig lo:1 192.168.1.200 netmask 255.255.255.255 broadcast 192.168.1.255 up
  ain#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
  BMain#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  做好之后再来看LVS

  做好LVS之后就应该反过来开始测试
  在apache上做如下操作
  解压mysql-w-r.tar.gz文件
  tar fxzv mysql-w-r.tar.gz
  拷贝文件到html目录
  在apache浏览器中输入http://localhost

  可以看到页面中有三个表 在html目录中有几个PHP文件 页面中的超链接就是调用的文件 我们通过用PHP代码来实现读写分离

  打开index.html可以看到超链接所调用的PHP文件

  打开mysql.php 编辑里面配置文件让创建数据库和表和插入数据操作都在主数据库服务器中进行
  在主数据库服务器开一个用户名让远程操作

  GRANT all privileges ON *.* TO 'aligatao'@'%'>  编辑msql-c.php 和insert.php 只修改第一行就可以

  在两台辅助mysql上分别建立用户让以远程登录

  GRANT all privileges ON *.* TO 'ali'@'%'>
  GRANT all privileges ON *.* TO 'ali'@'%'>  编辑mysql-c.php文件

  完成之后就可以测试打开第一个选项就出来

  看mysql主服务器的情况

  看到刚刚创建的数据库my_db 这时我们插入数据就插入到my_db这个数据库中了

  这个是主服务器中数据 在看看辅助服务器中数据

  可以看到从页面输入的值都显示在了上面

  看! LVS上面的数据走向 查询一次就经过一次LVS分发
  至此Mysql的高可用已经做完了 接下来再想自己安装个discuz论坛实现CDN空间服务商的类似服务项目,三个虚拟主机对应三个域名安装三个论坛 数据库用已经创建的
  1 解压Discuz
  APACHE#unzip Discuz_7.2_FULL_SC_UTF8.zip
  APACHE#cp -r upload/* /var/www/html/baidu/
  APACHE#cp -r upload/* /var/www/html/sina/
  APACHE#cp -r upload/* /var/www/html/yahoo/
  在客户端浏览器输入地址就可以安装

  霸王条款 点击我同意一步一步开始安装

  遇到这一步就要修改/var/www/html/baidu/里的响应文件的权限

  执行完成后就可以继续安装

  在填写数据库信息要注意上面的提醒----------

  点击下一步接着论坛就安装成功了

  创建discuz初始数据库的过程

  如此过程给yahoo和sina站点都安装discuz就可以实现实验给的目的
  下面还有很多表 截不出来了 不过大概可以看到表是一样的
  Discuz成功关联mysql mysql实现了高可用 实验成功!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-602586-1-1.html 上篇帖子: 24-PHP+MySQL分页技术详解 下篇帖子: 如何在Ubuntu Linux上安装 MySQL 8.0.11
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表