LAMP(Discuz) 负载均衡配置

要求: 使用若干个客户机(虚拟机)实现lamp负载均衡集群 解决数据同步、服务一致性的问题: 包括代码,用户数据,数据库数据,会话数据 如果使用共享存储的化,要求使用glusterfs(至少2节点) 由于实验条件的限制,暂时不考虑调度节点的单点故障

一、 1.配置 FQDN 主机名,并设置好IP 地址,并配置hosts 文件相互绑定。 2.全部使用 172.16.18.0/24 网段,使用域名 *.tomey.com

vim /etc/hosts

172.16.18.1 nginx.tomey.com www.tomey.com
172.16.18.10 lamp1.tomey.com
172.16.18.11 lamp2.tomey.com
172.16.18.20 gfs1.tomey.com
172.16.18.21 gfs2.tomey.com
172.16.18.30 mysql.tomey.com
172.16.18.40 memcache.tomey.com

将配置文件同步到所有节点
scp /etc/hosts/ root@172.16.18.10:/etc/hosts

二、 1.在 Lamp 与 Lamp2 节点上安装lamp。 yum -y install httpd php php-mysql php-pecl-memcache
> vim /etc/php.ini …
session.save_handler = memcache

session.save_path = “tcp://172.16.18.40:11211”

service httpd start >> 启动服务
chkconfig httpd on >> 设置开机启动

2.在 Mysql 服务器上安装并配置mysql-server yum -y install mysql-server mysql > vim /etc/my.cnf
[mysqld]
datadir=/data/
socket=/var/lib/mysql/mysql.sock
user=mysql
> log-bin=/data/mysql-bin
log-bin-index=/data/mysql-bin
skip-name-resolve
> [mysqld_safe]
log-error=/data/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

mkdir /data >> 创建数据目录
service mysqld start >> 启动 mysql 数据库
chkconfig mysqld on >> 设置服务开机启动
mysql_secure_installation >> 进行 mysql 安全设定

mysql -u root -phanhan123 >> 登录mysql 数据库
mysql> create database bbs default charset utf8; >> 创建一个数据库 并设置字符集编码为 utf8
grant all privileges on bbs.* to bbs@‘172.16.18.%’ identified by ‘123’; >> 授权表(只允许 172.16.18.0/24 网段链接到数据库)

3.安装 memcache 服务端 yum -y install memcached
service memcached start >> 启动服务
chkconfig memcached on >> 设置服务为开机启动

4.安装 nginx tar xf nginx-1.0.15.tar.gz -C /usr/src/ >> 解压软件包
useradd -M -s /sbin/nologin www >> 建立一个www用户
yum -y install pcre-devel zlib-devel >> 安装一些依赖库
cd /usr/src/nginx-1.0.15 >> 进入程序目录
./configure --prefix=/usr/local/nginx --with-pcre --user=www --group=www --with-http_stub_status_module && make && make install >> 配置并安装 nginx

配置 nginx 做调度器 > vim /usr/local/nginx/conf/nginx.conf
> worker_processes 1;
error_log logs/error.log;
pid logs/nginx.pid;
> events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream lampservers {
server 172.16.18.10 max_fails=3 fail_timeout=30s;
server 172.16.18.11 max_fails=3 fail_timeout=30s;
}
server {
listen 80;
server_name www.tomey.com;
location / {
proxy_pass http://lampservers;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
}}}


/usr/local/nginx/sbin/nginx -t >> 测试配置文件是否有误
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
/usr/local/nginx/sbin/nginx >> 启动nginx

安装 GlusterFS 服务端
修改yum 源配置文件
> vim /etc/yum.repos.d/yum.repo
[glusterfs]
name=glusterfs
baseurl=http://download.gluster.org/pub/gluster/glusterfs/3.6/3.6.2/CentOS/epel-6.5/x86_64/
enable=1
gpgcheck=0

service glusterd start >> 启动服务 chkconfig glusterd on >> 设置开机启动

gluster peer probe gfs1.tomey.com >> 建立关系
peer probe: success. Probe on localhost not needed


gluster peer probe gfs2.tomey.com
peer probe: success.


gluster peer status >> 查看关系是否建立
Number of Peers: 1
Hostname: gfs2.tomey.com
Uuid: 4f259b4a-5a9d-4e2c-ba51-02bef48a78c0
State: Peer in Cluster (Connected)


mkdir -p /usr/src/vdb1 >> 创建一个目录(可以不使用单独的硬盘) mount /dev/vdb1 /usr/src/vdb1 >> 挂载到刚刚创建端目录 > vim /etc/fstab

/dev/vdb1 /usr/src/vdb1 ext4 defaults 0 0


gluster volume create models(共享名) replica 2(节点数) gfs1.tomey.com(主机名):/usr/src/vdb1/(路径) gfs2.tomey.com:/usr/src/vdb1/ force gluster volume start models >> 启动 > gluster volume info >> 列出共享存储
Volume Name: models
Type: Replicate
Volume ID: 92d409d5-cb9a-4f6d-acb5-55fe1251fdf6
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: gfs1.tomey.com:/usr/src/vdb1
Brick2: gfs2.tomey.com:/usr/src/vdb1


在LAMP 节点上安装 gluster 客户端
修改yum 源配置文件
> vim /etc/yum.repos.d/yum.repo
[glusterfs]
name=glusterfs
baseurl=http://download.gluster.org/pub/gluster/glusterfs/3.6/3.6.2/CentOS/epel-6.5/x86_64/
enable=1
gpgcheck=0


yum install -y glusterfs glusterfs-fuse (安装 glusterfs 客户端) mount -t glusterfs (指定挂在格式) gfs1.tomey.com:models /var/www/html/ > vim /etc/fstab

gfs1.tomey.com:models /var/www/html glusterfs defaults,_netdev 0 0 >> 可以在fstab 内加入这行实现开机自动挂载

在LAMP 节点上安装 Discuz 程序
unzip Discuz_X3.2_SC_UTF8.zip -d /usr/src/ >> 解压网站代码
cp -a /usr/src/upload/* /var/www/html/ >> 复制网站代码文件到共享存储
cd /var/www/html >> 进入网站目录
chown apache.apache -R ./* >> 修改文件所属用户和组
chmod 755 -R ./* >> 修改文件的权限为 755
firefox http://www.tomey.com & >> 进入安装

填写数据库信息
数据库服务器: mysql.tomey.com >> 数据库服务器
数据库名: bbs >> 数据库名
数据库用户名: bbs >> 数据库用户名
数据库密码: 123 >> 数据库密码
数据表前缀: pre_ >> 如非必要不需要修改
系统信箱 Email:admin@tomey.com >> 填写邮箱地址
填写管理员信息
管理员账号: admin >> 可自定义
管理员密码: admin >> 密码
重复密码: admin >> 密码
管理员 Email: admin@tomey.com >> 填写邮箱地址