两台Web服务器+mysql主从

回复 收藏
本帖最后由 liang 于 2016-4-26 21:55 编辑

网站业务架构演变过程
http://www.apelearn.com/bbs/foru ... d=8644&fromuid=6493


阅读上面的文章后做的实验
实验1:一台WEB服务器一台mysql服务器
http://www.apelearn.com/bbs/foru ... =11876&fromuid=6493
实验2:web服务器添加memcached
http://www.apelearn.com/bbs/foru ... =11884&fromuid=6493

实验(三)两台Web服务器+mysql从主
3.jpg

在实验二的基础上增加一台web服务器,Web1服务器NFS共享存储,mysql服务器上安装DNS,实现两台Web服务器轮询访问,再增加一台mysql服务器做主从,Web服务为discuz

web1   eth0:192.168.2.128    eth1: 192.168.5.104   centos6.7_64    LNMP
web2   eth0:192.168.2.9        eth1: 192.168.5.105   centos6.7_64    LNMP

mysql-M  eth0: 192.168.2.5      eth1: 192.168.5.101   centos6.7_64    Mysql +DNS
mysql-S   eth0: 192.168.2.10    eth1: 192.168.5.108   centos6.7_64    Mysql

eth0 都为外网IP,eth1都为内网IP

(一)安装NFS

Web1与Web2为了缓存一样,使用NFS共享Web根目录

(1)Web1服务器中

安装NFS

yum install -y nfs-utils rpcbind

配置共享目录
vim /etc/exports

/data/www  192.168.5.0/24(rw,sync,no_all_squash)         ##权限这里感觉有待改进

启动NFS服务
/etc/init.d/rpcbind start; /etc/init.d/nfs start

开机启动
chkconfig rpcbind on
chkconfig nfs on


(2)Web2服务器中

LNMP配置文件与Web1相同

安装NFS客服端

yum install -y nfs-utils

查看服务器端共享目录

showmount -e 192.168.5.104

/data/www      192.168.5.0/24

挂载服务器端的NFS
mount -t nfs  -onolock,nfsvers=3 192.168.5.104:/data/www/ /data/www/

查看挂载的情况
df -h

Filesystem           1K-blocks    Used Available Use% Mounted on
tmpfs                   502384       0    502384   0% /dev/shm
/dev/sda1                95054   27167     62767  31% /boot
192.168.5.104:/data/www/
                      18344832 7868544   9537664  46% /data/www

添加开机加载
vim /etc/fstab里添加  
192.168.5.104:/data/www/   /data/www/   nfs  defaults  0 0


(3)mysql服务器中

登录mysql
mysql -uroot -ppasswd

授权Web2 连接
mysql>grant all on discuz.*  to 'user'@'192.168.5.105' identified by 'password';


(4)Web2服务器中

添加host
vim /etc/hosts

192.168.2.9    www.test.com

查看是否正常访问
curl -I  www.test.com

(5)安装memcached
过程与实验二一样



(二)安装DNS

mysql服务器中安装DNS

(1) 安装bind

yum install -y bind  bind-utils

备份原配置文件
cp /etc/named.conf /etc/named.conf.bak

清空原配置
>/etc/named.conf

(2)添加配置,创建test.com域
vim /etc/named.conf

options {
    directory "/var/named";
    forward first;                    ##解析其他域名时DNS转发到119.29.29.29
    forwarders { 119.29.29.29; };
};

zone "." IN  {
    type hint;
    file "named.ca";
};

##添加解析tes.com域名

zone "test.com" IN {
    type master;
    file "test.com.zone";
};

##反解析test.com域名

zone "5.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.zone";
};


修改属主
chown named /etc/named.conf


(3)创建编辑zone文件:

vim /var/named/test.com.zone

$TTL    600
@               IN      SOA     test.com.      root.test.com.    (
                                                        2016081601
                                                        1H
                                                        10M
                                                        7D
                                                        1 D )
                 IN      NS      ns.test.com.
ns               IN      A       192.168.5.101
www              IN      A       192.168.2.128
www              IN      A       192.168.2.9

(4)创建编辑反解析文件:

vim /var/named/192.168.zone

$TTL 600
@               IN      SOA     ns.test.com.      root.test.com. (
                                                        2016081601
                                                        1H
                                                        10M
                                                        7D
                                                        1D )
@               IN      NS      ns.test.com.
101             IN      PTR     ns.test.com.
128             IN      PTR     www.test.com.
9               IN      PTR     www.test.com.


(5)分别检测两个配置文件是否有问题:

named-checkzone "test.com" test.com.zone

named-checkzone "5.168.192.in-addr.arpa" 192.168.zone

生成 rndc.key,没有key,named启动不了

rndc-confgen -r /dev/urandom -a

chown named:named /etc/rndc.key

启动named
/etc/init.d/named start

chkconfig named on

测试解析和反解析

dig @127.0.0.1 www.test.com

dig  @127.0.0.1 -x 192.168.5.101


(6)Web1和Web2服务器中

修改DNS
vim /etc/sysconfig/network-scripts/ifcfg-eth0
vim /etc/sysconfig/network-scripts/ifcfg-eth1

指定DNS服务器IP为系统默认DNS(指定DNS内网外网IP都可以)

DNS1=192.168.5.101

service network restart

查看DNS,是否正确
vim /etc/resolv.conf

测试,多次Ping看是否轮询访问
ping  www.test.com


(三) mysql的主从的配置


mysql主 eth0: 192.168.2.5     eth1: 192.168.5.101   centos6.7_64    Mysql+DNS

mysql从  eth0: 192.168.2.10    eth1: 192.168.5.108   centos6.7_64    Mysql


(1)mysql主 中

备份mysql数据

mysqldump -uroot -p -A > sql_back.sql

编辑配置文件
vim /etc/my.cnf

server_id = 1      打开设置1,必须和从的数字不同

log_bin=user      打开log_bin,设置命令user
#binlog-do-db=db1,db2                #指定要同步的库,可设置多个库
#binlog-ignore-db=db1.db2         #同步的库太多时,指定忽略不同步的库

修改后重启
/etc/init.d/mysqld restart

配置授权
mysql -uroot -ptoor -S /tmp/mysql.sock
>grant replication slave on *.* to 'repl'@'192.168.5.108' identified by '123456';  ##Mysql从的IP
>flush privileges;                #刷新
>flush tables with read lock;        #锁死
>show master status;                #读取数据,记住前两列内容,后面会用到

+--------------+----------+--------------+------------------+-------------------+
| File         | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+--------------+----------+--------------+------------------+-------------------+
| user.000001 |      450 |              |                  |                   |
+--------------+----------+--------------+------------------+---------------

(2)mysql从配置

安装mysql后

编辑从的配置文件
vim /usr/local/mysql/my.cnf

server-id   = 2              ##修改与主不同

log_bin=user                ##与主相同

service mysql restart

将主备份的数据恢复到从

mysql -uroot -p -A  <  sql_back.sql

登录从mysql

mysql -uroot -p

>stop slave;            停止从
>change master to master_host='192.168.5.101', master_port=3306,master_user='repl', master_password='123456',master_log_file='user.000001', master_log_pos=450;
>start slave;                  开启从

##master_log_file和master_log_pos就是在上面使用 show master status; 查到的数据

(3)测试

1,在主mysql上,解锁表

mysql -uroot -ptoor -S /tmp/mysql.sock -e "unlock tables"

2,在从上查看状态

mysql -uroot -ptoor

>show slave status\G;

两个都是yes才正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes


3,测试主从

测试步骤为主上面执行一条命名,在从上面查看是否同步
禁止在从上修改数据库

登录主
mysql -uroot -ptoor
>create database db1;
>show databases;
>use db1;
>show tables;
>create table t (`id` int(4), `name` char(40));    ##创建一个表t1
>show tables;

>drop database db1;

登录从
mysql -uroot -ptoor
>show databases;
>use db1;
>show tables;
>show databases;

>show databases;


DNS负载均衡缺点是一台Web服务器宕机后,会有一半用户无法访问

#有错误的地方请指正
3.jpg
2016-04-04 19:12 举报
已邀请:
0

qq495966654

赞同来自:

完美
0

150411100

赞同来自:

学习啦,谢谢分享!
0

Linuxpp

赞同来自:

good
0

qiangdashen2

赞同来自:

学习了

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: