基于LAMP架构实现web网站高可用集群

1.安装7台主机,配置主机名网络,关闭防火墙和selinux

2.两台nginx主机,配置网络源安装Nginx  和  keeplived(热备)

3.两台apache主机,配置本地源安装,httpd和php  php-mysql

4.两台mysql主机,配置raid5,创建目录并挂载到/var/lib/mysql  再安装mariadb*

5.一台nfs主机,配置raid5,创建并挂载到/luntan目录中,安装nfs-utils*,配置软件

(可省略) /打开网卡配置文件

Vi   /etc/sysconfig/network-scripts/ifcfg-ens33

修改参数

BOOTPROTO=static

ONBOOT=yes

IPADDR=IP地址

NETMASK=对应子网掩码

GATEWAY=对应网关

注:如果是在vmware虚拟机上配置静态IP,如果主机网络类型是仅主机模式或者NAT模式请注意查看虚拟网络编辑器中对应网段与网关。

原因:当前的虚拟网络编辑器就是我们的模拟路由器,所以网段必须统一。

NFS

安装mdadm:   yum install -y mdadm

创建raid5:      mdadm  -C  /dev/md5  -l  5  -n 3 -x 1  /dev/sd{b,c,d,e}

格式化:     mkfs  -t ext4 /dev/md5

挂载:      mount /dev/md5 /luntan

安装软件:  yum install -y  nfs-utils*

安装NFS   yum install -y install nfs

关闭防火墙, systemctl stop firewalld

selinux        setenforce 0

先启动守护进程  systemctl start rpcbind

再启动运行程序  systemctl start nfs

更换到/目录   cd /

创建创建共享目录/luntan   mkdir /luntan

更换目录 /luntan     cd /luntan

上传需要被共享的文件到这个目录中去

wget  http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip

修改配置文件:vi /etc/exports

文件内容:共享目录的绝对路径 客户端(权限)

例如: /luntan *(rw,no_root_squash)

4.切换到客户端主机上进行挂载挂载共享目录到指定挂载点:

mount -t 文件系统类型 服务端IP:共享目录绝对路径本机挂点

例如: mount -t nfs 服务端 IP:/luntan /var/www/html

常见错误:

(1)提示文件系统类型不存在。解决方式:yum install -y nfs*

(2)提示挂载点目录路径或共享目录不存在错误。解决方式:确认本机挂载点正确,确认共享目录路径书写正确。

(3)提示Norouteto host。解决方式:关闭客户端服务器的防火墙和selinux

(4)提示拒绝被挂载。解决方式:服务端使用命令 exportfs +直看配置文件语法是否有误。

5.验证挂载成功

Showmount -e 本机IP地址

Apache

配置yum源 复制yum  在NFS上输入  scp /本地文件路径  root@目标主机IP:目标路径

安装NFS   yum install -y nfs*

安装httpd* yum install -y httpd*

安装php*  yum install -y php*

4.切换到客户端主机上进行挂载挂载共享目录到指定挂载点:

mount -t 文件系统类型 服务端IP:共享目录绝对路径本机挂点

例如: mount -t nfs 服务端IP:/luntan  /var/www/html

常见错误:

(1)提示文件系统类型不存在。解决方式:yum install -y nfs*

(2)提示挂载点目录路径或共享目录不存在错误。解决方式:确认本机挂载点正确,确认共享目录路径书写正确。

(3)提示Norouteto host。解决方式:关闭客户端服务器的防火墙和selinux

(4)提示拒绝被挂载。解决方式:服务端使用命令 exportfs +直看配置文件语法是否有误。

5.验证挂载成功

Showmount -e 本机IP地址

下载wget 安装 wget  http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip

安装unzip*:   yum install -y unzip*

切换目录:     cd /var/www/html

解压:        unzip D......[将NFS里面下载的Dis.......解 压到httpd里面

Unzip Discuz_X3.2_SC_UTF8\(1\).zip -d /var/www/html/

移动:       mv /var/www/html/upload/*  /var/www/html

修改权限:    chmod -R 757 data config uc*

关闭防火墙:  systemctl stop firewalld

关闭selinux:    setenforce 0

重新启动httpd;     systemctl restart httpd

MySQL【配置数据库开启远程服务】

下载mdadm:yum install -y mdadm

创建raid5:    mdadm  -C  /dev/md5  -l  5  -n 3 -x 1  /dev/sd{b,c,d,e}

格式化:    mkfs  -t ext4 /dev/md5

创建挂载点:   mkdir /var/lib/md5

挂载:      mount /dev/md5  /var/lib/mysql/

配置yum源  复制yum  在NFS上输入  scp /本地文件路径  root@目标主机IP;目标路径

配置数据库开启远程管理

1.安装数据库 yum install -y mariadb*

2.启动数据库 systemctl start mariadb

3.配置密码 mysql_secure_installation

4.本机登录验证 mysql -uroot -p

5.授权 grant all privileges on *.* to 'root'@'%' identified by '123456';

6. 刷新权限 flush privileges;

7.退出 quit

8.关闭主机防火墙  systemctl stop firewalld

9.关闭主机selinux  setenfroce 0

MySQL主从复制

2. 主从复制配置过

2.2.1 主库配置

# vim /etc/my.cnf

[mysqld]

....

log-bin=mysql-bin   #日志文件名称mysql-bin.00001

server-id=1    #0--65535范围

sync_binlog=1

auto_increment_increment=2

auto_increment_offset=1

binlog-ignore-db=mysql

binlog-ignore-db=information_schema

binlog-ignore-db=performance_schema

binlog-ignore-db=sys

# 修改完成之后需要重启Mysql服务

systemctl restart mariadb

# 授权远程用户

mysql> CREATE USER 'shz'@'%' IDENTIFIED BY '123456';

mysql>grant all privileges on *.* to 'shz'@'%' identified by '123456';

mysql> flush privileges;

#验证成功,切换到从机

mysql  -h主机IP  -ushz   -p123456

登录成功证明主库用户授权成功,网络互通,防火墙selinux关闭生效

2.从库配置

# vim /etc/my.cnf

[mysqld]

...

server-id=3

relay-log=mysql-relay-bin

replicate-ignore-db=mysql

replicate-ignore-db=information_schema

replicate-ignore-db=performance_schema

replicate-ignore-db=sys

重启服务 systemctl restart mariadb

2.2.3 在主库上导出所有数据库

#在主机与从机上创建master1数据库

MASTER > create database  master1;

SLAVE  > create database  master1;

# 获取库信息

MASTER> show master status;  查询Log_file  log_pos

#配置从库连接到主库,MASTER_LOG_FILE与MASTER_LOG_POS的值由主库信息获得

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;

#开启复制

start slave;

#查看slave状态

show slave status \G;

#主要查看内容:

Slave_IO_Running,Slave_SQL_Running的状态要为Yes。

nginx

基于NGINX完成的负载均衡

  1. 配置yum源

[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

2.修改/etc/resolv.conf

nameserver   网关

wget  http://mirrors.aliyun.com/repo/Centos-7.repo

  1. 安装nginx

yum   install  -y  nginx

  1. 启动

systemctl   start  nginx

注:nginx使用tcp80端口,请注意与其他web服务冲突、

  1. 配置反向代理的主机是谁

vi   /etc/nginx/nginx.conf

http {

...

    upstream backend {

        server 192.168.100.102:80;     apache1主机IP

        server 192.168.100.103:80;     apache2主机IP

    }

}

  1. 配置Nginx开启反向代理访问

/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;

    }

}

在两个NGINX主机上安装keepalived

Yum -y install keepalived

修改配置/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.150.200

    }

}

辅调度器上要稍作修改:

将  router_id 1  改为  router_id 2

将  state MASTER  改为  state BACKUP

将  priority 100  改为  priority 99

其他不变

你可能感兴趣的:(架构,前端,服务器)