基于LAMP架构实现web网站高可用集群
安装7台主机,配置主机名网络,关闭防火墙和selinux
两台nginx主机,配置网络源安装Nginx 和 keeplived(热备)
两台apache主机,配置本地源安装,httpd和php php-mysql
两台mysql主机,配置raid5,创建目录并挂载到/var/lib/mysql 再安装mariadb*
一台nfs主机,配置raid5,创建并挂载到/luntan目录中,安装nfs-utils*,配置软件
本地yum源配置:
挂载
mount /dev/sr0 /mnt
df -hT (查看挂载)
配置yum源
2.1.备份原有yum源仓库配置
cp -rp /etc/yum.repos.d/ /
2.2.切换目录到/etc/yum.repos.d/
cd /etc/yum.repos.d/
2.3.清空原有yum源配置
rm -rf *
2.4.添加新的yum配置文件
#vi centos.repo
[a]
name=CentOS
enabled=1
gpgcheck=0
baseurl=file:///mnt
2.5生成新yum缓存
yum repolist
搭建LAMP架构实现web网站高可用集群
一、搭建NFS服务。目的是:让两个apache使用同一套前端页面
NFS:搭建NFS服务,创建共享目录,上传前端页面,关闭防火墙,关闭selinux。重启服务
(创建raid5: mdadm -C /dev/md5 -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}
格式化: mkfs -t 文件系统类型 分区绝对路径
Mkfs -t ext4 /dev/md5
创建目录mkdir /var/lib/mysql
临时挂载: mount 分区绝对路径 挂载点
Mount /dev/md5 /var/lib/mysql
开机自动挂载:vi /etc/fstab 切换到最后一行
设备绝对路径 挂载点 文件系统类型 defaults 0 0)
关闭防墙和selinux
Setenforce 0
Systemctl stop firawalld
2.安装nfs*/httpd*
3. 启动rpcbind/nfs/httpd
systemcatl start rpcbind /nfs /httpd
4.创建目录
mkdir /luntan
5.修改配置文件
vi /etc/export
/luntan *(rw,no_root_squash)
上传/下载论坛包
cd /luntan
wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip
7.解压
unzip Discuz_X3.2_SC_UTF8.zip
8.复制upload/* .文件
cp -rp upload/* .
9.修改权限
chmod -R 757 data uc_server coonfig uc_client
二、搭建Apache服务。目的是:提供web界面后台解析。
Apache:两台主机安装apache+php+php-mysql,挂载NFS共享目录到/var/www/html。启动服务,关闭防火墙和selinux
1.关闭防火墙和selinux
2.安装nfs*/httpd*/php*
3.systemctl start rpcbind /nfs /httpd
4.挂载nfs
mount -t nfs nfs的IP:/luntan /var/www/html
查看挂载
df -h
浏览器访问两台apache的ip,发现问题及时排错
三、添加负载均衡服务
NGINX:配置网络源安装,修改配置文件/etc/nginx/nginx.conf /etc/nginx/conf.d/default.conf
重启服务。
基于NGINX完成的负载均衡
1.安装nginx(注意查看挂载和本地源)
1.1阿里源:
wget http://mirrors.aliyun.com/repo/Centos-7.repo
1.2网络源:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
1.3安装nginx
yum install -y nginx
2.启动
systemctl start nginx
注:nginx使用tcp80端口,请注意与其他web服务冲突、
3.配置反向代理
#vi /etc/nginx/nginx.conf
http {
...
upstream backend {
server 192.168.100.102:80; #apache1主机IP
server 192.168.100.103:80; #apache2主机IP
}
4.配置Nginx开启反向代理访问
#vi /etc/nginx/conf.d/default.conf
server {
...
location / {
...
...
proxy_pass http://backend;
proxy_redirect default;
#设置代理
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
使用浏览器访问http://nginx主机IP 确认是否自动跳转到apache主机上。关闭apache1,刷新浏览器页面,看是否切换到apache2主机主页
5.在两个NGINX主机上安装keepalived
yum install -y keepalived
6.修改配置/etc/keepalived/keepalived.conf
清空内容后,添加以下内容
global_defs {
router_id 1
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 1
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.100.200
}
}
辅调度器上要稍作修改:
将 router_id 1 改为 router_id 2
将 state MASTER 改为 state BACKUP
将 priority 100 改为 priority 99
其他一致即可
浏览器访问虚拟ip,发现问题及时排错
四、搭建数据库服务。目的是:存放论坛数据。
Mariadb: 主机安装服务,启动服务,配置密码,登录授权,关闭防火墙和selinux
mysql 主从复制
环境准备
相关配置
1.关闭防火墙和selinux
systemctl stop firewalld
setenforce 0
2. 主库和从库Mysql安装与配置(注意查看挂载和本地源)
yum -y install mariadb*
3.开启Mysql服务,并查看服务状态
systemctl start mariadb
systemctl status mariadb
4.修改数据库ROOT密码
设置密码
mysql_secure_installation
#在提示符下输入密码123456
注:需要先启动软件才能设置密码,否则会提示套接字未运行
5.主从复制配置过程
5.1.主库配置
#vi /etc/my.cnf
[mysqld]
....
server-id=1
log-bin=mysql-bin
5.2修改完成之后需要重启Mysql服务
systemctl restart mariadb
5.3授权远程用户
Mysql -uroot -p123456
mysql> CREATE USER 'shz'@'%' IDENTIFIED BY '123456';
mysql> grant all privileges on *.* to 'shz'@'%' identified by '123456';
mysql> flush privileges;
授权root用户
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456';
mysql> flush privileges;
#验证成功,切换到从机
mysql -h主机IP -ushz -p123456
登录成功证明主库用户授权成功,网络互通,防火墙selinux关闭生效
quit
5.4从库配置
# vi /etc/my.cnf
[mysqld]
...
server-id=2
relay-log=mysql-relay-bin
5.5重启服务
systemctl restart mariadb
5.6获取主库信息(进入主库)
mysql -uroot -p123456
MASTER> show master status; 查询Log_file log_pos
5.7配置从库连接到主库,MASTER_LOG_FILE与MASTER_LOG_POS的值由主库信息获得
mysql -uroot -p123456
mysql> CHANGE MASTER TO MASTER_HOST='192.168.122.148', MASTER_USER='shz', MASTER_PASSWORD='123456', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=670, MASTER_CONNECT_RETRY=10;
5.7.1.开启复制
start slave;
5.7.2.查看slave状态
show slave status \G;
5.7.3主要查看内容
Slave_IO_Running和Slave_SQL_Running的状态都要为Yes。
#主从复制测试
1.在主库进行数据修改
Master> create table master1.ceshi(id int);
2.查看从库数据是否与主库同步
SLAVE> use master1;
SLAVE> show tables;
主机和从机安装keepalived(注意查看挂载和本地源)
yum install -y keepalived
启动keepalived
systemctl start keepalived
配置keepalived
修改配置
#vi /etc/keepalived/keepalived.conf
清空内容后,添加以下内容(注意和nginx的keepalived区别)
global_defs {
router_id 1
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 1
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.100.200
}
}
辅调度器上要稍作修改:
将 router_id 1 改为 router_id 2
将 state MASTER 改为 state BACKUP
将 priority 100 改为 priority 99
其他一致即可
五、修改windows的hosts文件,添加一个新的域名
修改文件
1.依次找到
C:\Windows\System32\drivers\etc\hosts
2.用记事本打开后在最后一行添加 IP 域名(添加nginx的虚拟ip)