NFS共享MySQL使用DNS轮询实现Web负载均衡 推荐
2016-03-29 12:12
696 查看
NFS共享MySQL使用DNS轮询实现Web负载均衡
前言:
今天学习了NFS,遂结合前面学习的
LAMP+
Bind做一个实验,实现两台Web服务器采用同一个MySQL数据库和相同的网页文件,对LAMP和Bind不了解的可以去查看我以前写的博客: AnyISalIn的文章
实验拓扑图
实验环境
主机名 | IP地址 | 实现 |
---|---|---|
storage.anyisalin.com | 192.168.2.5 | NFS |
ns.anyisalin.com | 192.168.2.2 | dns,MySQL |
www.anyisalin.com | 192.168.2.3 | web |
www.anyisalin.com | 192.168.2.4 | web |
SElinux和
IPtables[/b]
实验步骤
搭建NFS
[b]以下操作在storage.anyisalin.com中执行[/b]
[root@storage ~]# yum install nfs-utils | tail -n 10 #安装nfs-utils 这里已经安装过了 Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Install Process Loading mirror speeds from cached hostfile * base: mirrors.pubyun.com * extras: mirrors.skyshe.cn * updates: mirrors.pubyun.com Package 1:nfs-utils-1.2.3-64.el6.x86_64 already installed and latest version Nothing to do创建文件夹并导出
[root@storage ~]# mkdir /var/mydata [root@storage ~]# mkdir /var/webroot [root@storage var]# cd /var/webroot/ [root@storage webroot]# unzip wordpress-4.4.1-zh_CN.zip &> /dev/null [root@storage webroot]# ls wordpress wordpress-4.4.1-zh_CN.zip [root@storage webroot]# chmod 777 wordpress -R [root@storage ~]# vim /etc/exports /var/mydata 192.168.2.2(rw,no_root_squash) /var/webroot 192.168.2.3(rw,no_root_squash) 192.168.2.4(rw,no_root_squash) [root@storage ~]# service rpcbind start && service nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ] [root@storage ~]# showmount -e localhost #查看当前导出的目录 Export list for localhost: /var/webroot 192.168.2.4,192.168.2.3 /var/mydata 192.168.2.2
搭建dns,MySQL环境
[b]以下操作在ns.anyisalin.com中执行[/b]DNS配置
[root@localhost ~]# yum install bind mysql-server -y | tail -n 10 #信息过长遂使用tail限制 perl-DBD-MySQL.x86_64 0:4.013-3.el6 perl-DBI.x86_64 0:1.609-4.el6 perl-Module-Pluggable.x86_64 1:3.90-141.el6_7.1 perl-Pod-Escapes.x86_64 1:1.04-141.el6_7.1 perl-Pod-Simple.x86_64 1:3.13-141.el6_7.1 perl-libs.x86_64 4:5.10.1-141.el6_7.1 perl-version.x86_64 3:0.77-141.el6_7.1 portreserve.x86_64 0:0.0.4-9.el6 Complete! [root@localhost ~]#在/etc/named.rfc1912.zones文件中添加以下几行
zone "anyisalin.com" IN { type master; file "anyisalin.com.zone"; };
配置区域解析库文件为如下
vim /var/named/anyisalin.com.zone $TTL 600 $ORIGIN anyisalin.com. @ IN SOA ns.anyisalin.com amdin.anyisalin.com ( 20160328 1D 5M 7D 1D ) IN NS ns ns IN A 192.168.2.2 www IN A 192.168.2.3 www IN A 192.168.2.4 storage IN A 192.168.2.5测试效果如下,以达到DNS实现轮询
MySQL配置
这里MySQL数据库文件通过NFS保存在远程主机
[root@localhost ~]# mkdir /mydata [root@localhost ~]# mount -t nfs 192.168.2.5:/var/mydata /mydata
[root@localhost ~]# cd /usr/src/ [root@localhost src]# ls debug kernels mariadb-5.5.32-linux-x86_64.tar.gz [root@localhost src]# tar xf mariadb-5.5.32-linux-x86_64.tar.gz [root@localhost src]# cd mariadb-5.5.32-linux-x86_64 [root@localhost mariadb-5.5.32-linux-x86_64]# ls bin COPYING COPYING.LESSER data docs include INSTALL-BINARY lib man mysql-test README scripts share sql-bench support-files [root@localhost mariadb-5.5.32-linux-x86_64]# groupadd -r -g 3306 mysql groupadd: group 'mysql' already exists [root@localhost mariadb-5.5.32-linux-x86_64]# useradd -r -g mysql -s /sbin/nologin mysql useradd: user 'mysql' already exists [root@localhost mariadb-5.5.32-linux-x86_64]# ./scripts/mysql_install_db --datadir=/mydata --user=mysql #初始化数据库 Installing MariaDB/MySQL system tables in '/mydata' ... OK Filling help tables... OK #内容省略 [root@localhost mariadb-5.5.32-linux-x86_64]# ls /mydata/ #查看生成的数据库 aria_log.00000001 aria_log_control mysql performance_schema test [root@localhost src]# ln -sv /usr/src/mariadb-5.5.32-linux-x86_64 /usr/local/mysql `/usr/local/mysql' -> `/usr/src/mariadb-5.5.32-linux-x86_64' [root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld [root@localhost mysql]# cp support-files/my-large.cnf /etc/my.cnf [root@localhost mysql]# vim /etc/my.cnf #添加以下三行 datadir = /mydata skip_name_resolve = on innodb_file_per_table = on [root@localhost mysql]# export PATH=/usr/local/mysql/bin/:$PATH [root@localhost mysql]# service mysqld start #测试MySQL是否能正常启动 Starting MySQL... SUCCESS! [root@localhost mysql]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 1 Server version: 5.5.32-MariaDB-log MariaDB Server Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> GRANT ALL ON wp.* TO 'wpuser'@'%' IDENTIFIED BY 'passwd'; Query OK, 0 rows affected (0.04 sec) mysql> CREATE DATABASE wp; Query OK, 1 row affected (0.02 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.01 sec)
WEB配置
第一台主机安装[b][b]以下操作在www.anyisalin.com(192.168.2.3)中执行[/b][/b][root@localhost ~]# yum install httpd php php-mysql -y | tail -n 10 apr-util.x86_64 0:1.3.9-3.el6_0.1 apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 httpd-tools.x86_64 0:2.2.15-45.el6.centos libedit.x86_64 0:2.11-4.20080712cvs.1.el6 mailcap.noarch 0:2.1.31-2.el6 php-cli.x86_64 0:5.3.3-40.el6_6 php-common.x86_64 0:5.3.3-40.el6_6 php-pdo.x86_64 0:5.3.3-40.el6_6 Complete! [root@localhost ~]# vi /etc/httpd/conf.d/virt.conf #编辑配置文件 NameVirtualHost 192.168.2.3:80 NameVirtualHost 192.168.2.3:80 <VirtualHost 192.168.2.3:80> ServerName www.anyisalin.com DocumentRoot /webroot/wordpress </VirtualHost> [root@localhost ~]# service rpcbind start Starting rpcbind: [ OK ] [root@localhost ~]# mount ^C [root@localhost ~]# mkdir /webroot [root@localhost ~]# mount -t nfs 192.168.2.5:/var/webroot /webroot/ [root@localhost ~]# ls /webroot/ wordpress wordpress-4.4.1-zh_CN.zip [root@localhost ~]# service httpd start Starting httpd: httpd: apr_sockaddr_info_get() failed for www.anyisalin.com httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [Wed Mar 23 18:05:15 2016] [warn] NameVirtualHost 192.168.2.3:80 has no VirtualHosts [ OK ]安装前我们需要先将dns服务器中对192.168.2.4的解析注释,避免安装时出现解析问题
安装过程不做演示
第二台主机安装以下操作在www.anyisalin.com(192.168.2.4)中执行
我们要将dns服务器中的A记录恢复到初始轮询的状态
[root@localhost ~]# yum install httpd php php-mysql nfs-utils -y | tail -n 10 Installed: httpd.x86_64 0:2.2.15-45.el6.centos nfs-utils.x86_64 1:1.2.3-64.el6 php.x86_64 0:5.3.3-40.el6_6 php-mysql.x86_64 0:5.3.3-40.el6_6 Dependency Installed: apr.x86_64 0:1.3.9-5.el6_2 apr-util.x86_64 0:1.3.9-3.el6_0.1 apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 httpd-tools.x86_64 0:2.2.15-45.el6.centos keyutils.x86_64 0:1.4-5.el6 libedit.x86_64 0:2.11-4.20080712cvs.1.el6 libevent.x86_64 0:1.4.13-4.el6 libgssglue.x86_64 0:0.1-11.el6 libtirpc.x86_64 0:0.2.1-10.el6 mailcap.noarch 0:2.1.31-2.el6 nfs-utils-lib.x86_64 0:1.1.5-11.el6 php-cli.x86_64 0:5.3.3-40.el6_6 php-common.x86_64 0:5.3.3-40.el6_6 php-pdo.x86_64 0:5.3.3-40.el6_6 python-argparse.noarch 0:1.2.1-2.1.el6 rpcbind.x86_64 0:0.2.0-11.el6 Complete!
[root@localhost ~]# vim /etc/httpd/conf.d/virt.conf NameVirtualHost 192.168.2.4:80 <VirtualHost 192.168.2.4:80> ServerName www.anyisalin.com DocumentRoot /webroot/wordpress </VirtualHost> [root@localhost ~]# service rpcbind start Starting rpcbind: [ OK ] [root@localhost ~]# mkdir /webroot [root@localhost ~]# mount -t nfs 192.168.2.5:/var/webroot /webroot/ [root@localhost ~]# service httpd start Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using www.anyisalin.com for ServerName [ OK ] [root@localhost ~]#
确保DNS服务能提供以下效果
测试
由于在Windows我们不好进行模拟, 遂修改HOSTS文件达到测试效果
web1测试
现在访问web1主机发布一篇文章测试
web2测试
现在访问web2主机还能够看到刚才发的文章
再发布一篇文章
回到web1测试
再次访问web1主机虽然页面一样, 但是主机已经是web2了
总结
虽然本文最后测试时只修改了hosts文件进行测试,但是如果指定DNS地址为192.168.2.2的话是能够完成负载均衡的效果的,但是NFS的网络传输文件的效率并不好,后期会学习LVS和Nginx, HAproxy等专用负载均衡软件再给大家写一篇。作者: AnyISalIn
感谢: MagEdu
相关文章推荐
- MySQL中的integer 数据类型
- java-WEB中的监听器Lisener
- MySQL存储过程
- GUI - Web前端开发框架
- Extjs4.0 最新最全视频教程
- 拿到OK2440开发板之后——连接nfs服务器
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- MyEclipse Web Project转Eclipse Dynamic Web Project
- axis备忘
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)