基于NFS实现多WEB服务器负载均衡
实现环境:
实现原理:
共四台服务器 A,B,C,D
服务器A (CentOS 6.7):
IP地址:
192.168.3.67
角色:
DNS服务
说明:
为两台web服务器做域名轮询
服务器B,C (CentOS 7.2):
IP地址:
B:192.168.3.70
C:192.168.3.77
角色:
web服务器
说明:
httpd+php模式.共享使用由服务器D通过NFS服务共享的Discuz文档.
服务器D (CentOS 6.7):
IP地址:
192.168.3.60
角色:
MySQL服务器,NFS服务器
说明:
MySQL允许服务器B,C远程连接
NFS服务为服务器B,C共享Discuz所有文档
服务器D
Mysql服务
安装Mysql:
# yum install -y mysql-server mysql mysql-devel
启动mysql
# service mysqld start
检查3306端口是否被mysql监听
# netstat -anp | grep 3306
检查是否开机自启动
# chkconfig --list | grep mysqld
[root@localhost ~]# chkconfig --list | grep mysqld
mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off
设置为开机自启
# chkconfig mysqld on
[root@localhost ~]# chkconfig mysqld on
[root@localhost ~]# chkconfig --list | grep mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
给mysql的root帐户设定密码为"root"
# /usr/bin/mysqladmin -u root password 'root'
登陆mysql
# mysql -u root -p
[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.73 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
创建一个数据库dzdb
mysql> create database dzdb;
给这个数据库创建并绑定一个数据库用户dzuser,可以通过所有192.168.3网段访问,并指定密码为dzuser
mysql> grant all privileges on dzdb.* to 'dzuser'@'192.168.3.%' identified by 'dzuser';
测试中发现远程主机无法连接
[root @qt1 /web/vhosts/pma]# mysql -udzuser1 -h192.168.3.60 -p
Enter password:
ERROR 1045 (28000): Access denied for user 'dzuser'@'192.168.3.77' (using password: YES)
排除防火墙原因后,发现导致无法登陆的原因是user表中有空用户所致.
删除掉空用户即可:
mysql> delete from user where user='';
NFS服务设定
安装NFS:
# yum install nfs-utils
创建共享文件夹
# mkdir /var/www/nfs
设置权限
# setfacl -m u:apache:rwx /var/www/nfs
设定,允许服务器B和C读写
# vim /etc/exports
/var/www/nfs 192.168.3.70(rw,no_root_squash) 192.168.3.77(rw,no_root_squash)
启动服务,首先保证rpcbind服务已开启
# service rpcbind start
# service nfs start
设置开机自启
# chkconfig rpcbind on
# chkconfig nfs on
# chkconfig nfslock on
查看本机共享
# showmount -e
服务器B
创建挂载点
# mkdir /web/nfsdz
将这个目录设定主目录
# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/web/nfsdz"
DirectoryIndex index.php index.html
# systemctl reload httpd
安装nfs
# yum install nfs-utils
# systemctl start rpcbind
# systemctl start nfs
挂载
# mount -t nfs -o nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768 192.168.3.60:/var/www/nfs /web/nfsdz
加入开机启动
# vim /etc/fstab
192.168.3.60:/var/www/nfs /web/nfsdz nfs defaults,_netdev 0 0
Discuz文档
将Discuz网站文档放进/web/nfsdz文件夹,步骤略.
添加权限
# cd /web/nfsdz
# chmod -R 777 *
服务器C
设置部分同服务器B
安装Discuz
浏览器输入http://192.168.3.70/install 开始安装Discuz,数据库配置填写上面刚做的配置,如图
安装完毕,分别测试访问192.168.3.70和192.168.3.77
服务器A(DNS服务器)
BIND安装步骤略
关键配置部分:
由于是本地测试,所以我自定义一个域名www.testdz.com.
# vim /etc/named.rfc1912.zones
添加以下设置
zone "testdz.com" IN{
type master;
file "testdz.com.zone";
};
保存退出
# vim /var/named/testdz.com.zone
$TTL 600
@ IN SOA ns1.testdz.com. admin.testdz.com. (
2016051808
3H
15M
1W
1D
)
IN NS ns1.testdz.com.
IN NS ns2.testdz.com.
www IN A 192.168.3.77
www IN A 192.168.3.70
testdz.com. IN A 192.168.3.77
ns2 IN A 192.168.3.70
ns1 IN A 192.168.3.67
关键为黑体加粗部分,使用DNS轮询.
保存退出
重载配置
# service named reload
之后便可以通过域名www.testdz.com访问了,不同计算机第一次访问会被DNS分配到不同的主机上.
最新文章
- Linux服务器oraclejdk与openjdk共存并配置JavaEE开发环境
- C# 读取excel日期时获取到数字转换成日期
- SQL入门经典(六) 之视图
- JSON-LD
- 使用js使某个按钮在5秒内不能重复点击
- [Javascript] Chaining the Array map and filter methods
- 【2011 Greater New York Regional 】Problem I :The Golden Ceiling
- K3整理
- 【转】MUD教程--巫师入门教程2
- Hadoop技术在商业智能BI中的应用
- 动态规划——Frog Jump
- 论文笔记:Deep feature learning with relative distance comparison for person re-identification
- js在字符串中提取数字
- Vue基础进阶 之 Vue生命周期与钩子函数
- Android 开发 技术大纲
- Golang 处理 Json(一):编码
- Docker安装和常用命令
- 精品绿色便携软件 &; 录制操作工具
- B-tree B+tree适合文件系统索引和MySQL索引
- VMWare虚拟机下为Ubuntu 12.04.1配置静态IP(NAT方式)
热门文章
- ps中的常用功能与技巧
- 【随笔】关于绝对定位absolute相对于父元素定位的问题
- 如何制作Win10系统U盘安装镜像
- 第4天:function对象(案例:获取当前日期属于当年第几天、arguments对象、函数类型、参数、返回值、自身调用)
- package.json中^符号和~符号前缀的区别
- Vue-Router的使用(一)
- Cheatsheet: 2017 04.01 ~ 04.30
- ZT 为什么Java中继承多数是有害的?
- Spring课程 Spring入门篇 5-6 introductions应用
- Java接口和抽象类理解(New)