搭建PowerDNS+LAP+NFS+MySQL主从半节点同步实现LAMP架构
共7台机器)
PowerDNS: 192.168.99.110
两台LAP: 192.168.99.120 和 192.168.99.130
NFS服务器:192.168.99.140
MySQL:主节点:192.168.99.150
从节点B:192.168.99.160 和192.168.99.170
拓扑图:
实验步骤:
一、先搭建MySQL主从半节点99.150、160和170
在主节点上150操作
1、先修改配置文件内容添加server-id和bin-log
[root@centos7 ~]#vim /etc/my.cnf [mysqld] server-id=150 log-bin
[root@centos7 ~]#systemctl start mariadb
2、查看主节点的pos位置点并创建从节点复制同步时使用的用户账号
MariaDB [(none)]> show master status;
MariaDB [(none)]> grant replication slave on *.* to repluser@'%' identified by '123';
两个从节点:160,170同样的操作
1、在配置文件中添加各自的server-id号,然后向主节点使用刚刚创建的复制账号进行同步操作
[root@centos7 ~ ]#vim /etc/my.cnf
[mysqld]
server-id=160
#启动MySQL数据库
2、使用复制账号向主节点同步,然后查看同步的状态
MariaDB [(none)]> change master to
master_host='192.168.99.150',
master_user='repluser',
master_password='123',
master_port=3306,
master_log_file='mariadb-bin.000001',
master_log_pos=245;
MariaDB [(none)]> slave start;
MariaDB [(none)]> show slave status\G
看到两个线程状态为Yes就表示此时已经同步成功了
170机器同样的操作
主节点150:
MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
MariaDB [(none)]> show plugins;
...
| rpl_semi_sync_master | ACTIVE | REPLICATION | semisync_master.so | GPL |
+--------------------------------+----------+--------------------+--------------------
#查看节点的启用状态
MariaDB [(none)]> show global variables like '%semi%';
+------------------------------------+-------+
| Variable_name | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled | OFF |
| rpl_semi_sync_master_timeout | 10000 | #其中:timeout这个参数是指同步超时时间
| rpl_semi_sync_master_trace_level | 32 |
| rpl_semi_sync_master_wait_no_slave | ON |
+------------------------------------+-------+
② 启用master端的插件
MariaDB [(none)]> set global rpl_semi_sync_master_enabled=on;
#查看一下是否启用
MariaDB [(none)]> show global variables like '%semi%';
+------------------------------------+-------+
| Variable_name | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled | ON |
③ 两个从节点160和170同样的操作:
安装slave端的插件:
MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
#查看下插件的状态,此时并没有启动,enabled为OFF
MariaDB [(none)]> show global variables like '%semi%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled | OFF |
| rpl_semi_sync_slave_trace_level | 32 |
+---------------------------------+-------+
#启用插件
MariaDB [(none)]> set global rpl_semi_sync_slave_enabled=on;
#再次查看状态
MariaDB [(none)]> show global variables like '%semi%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled | ON | #状态为 ON 已启用
| rpl_semi_sync_slave_trace_level | 32 |
+---------------------------------+-------+
#插件启用完了还需要重新启动slave的线程
MariaDB [(none)]> stop slave;
MariaDB [(none)]> start slave;
⑤ 回到主节点机器99.150上查看插件的状态,此时应该是有两个客户端了
MariaDB [(none)]> SHOW GLOBAL STATUS LIKE '%semi%';
+--------------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------------+--------+
| Rpl_semi_sync_master_clients | 2 | #客户端数量为 2
.....
4、在主节点150主节点中先创建一个wordpress网站用的账号,等会需要使用
MariaDB [(none)]> create database wpdb;
MariaDB [(none)]> grant all privileges on wpdb.* to wpuser@'192.168.99.%' identified by "xu";
二、
1、在99.110机器上操作
#安装软件包 yum install -y pdns pdns-backend-mysql (epel源里的包) [root@centos7 ~]#yum -y install httpd php php-mysql php-mbstring [root@centos7 ~]#systemctl start httpd
2、需要在数据库中创建相应的库和表
#进入数据库中创建相应的库和表 MariaDB [(none)]> CREATE DATABASE powerdns; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> GRANT ALL ON powerdns.* TO 'powerdns'@'192.168.99.110' IDENTIFIED BY '123'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | powerdns | | test | +--------------------+ 5 rows in set (0.00 sec) USE powerdns; CREATE TABLE domains ( id INT AUTO_INCREMENT, name VARCHAR(255) NOT NULL, master VARCHAR(128) DEFAULT NULL, last_check INT DEFAULT NULL, type VARCHAR(6) NOT NULL, notified_serial INT DEFAULT NULL, account VARCHAR(40) DEFAULT NULL, PRIMARY KEY (id) ) Engine=InnoDB; CREATE UNIQUE INDEX name_index ON domains(name); CREATE TABLE records ( id BIGINT AUTO_INCREMENT, domain_id INT DEFAULT NULL, name VARCHAR(255) DEFAULT NULL, type VARCHAR(10) DEFAULT NULL, content VARCHAR(64000) DEFAULT NULL, ttl INT DEFAULT NULL, prio INT DEFAULT NULL, change_date INT DEFAULT NULL, disabled TINYINT(1) DEFAULT 0, ordername VARCHAR(255) BINARY DEFAULT NULL, auth TINYINT(1) DEFAULT 1, PRIMARY KEY (id) ) Engine=InnoDB; CREATE INDEX nametype_index ON records(name,type); CREATE INDEX domain_id ON records(domain_id); CREATE INDEX recordorder ON records (domain_id, ordername); CREATE TABLE supermasters ( ip VARCHAR(64) NOT NULL, nameserver VARCHAR(255) NOT NULL, account VARCHAR(40) NOT NULL, PRIMARY KEY (ip, nameserver) ) Engine=InnoDB; CREATE TABLE comments ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, name VARCHAR(255) NOT NULL, type VARCHAR(10) NOT NULL, modified_at INT NOT NULL, account VARCHAR(40) NOT NULL, comment VARCHAR(64000) NOT NULL, PRIMARY KEY (id) ) Engine=InnoDB; CREATE INDEX comments_domain_id_idx ON comments (domain_id); CREATE INDEX comments_name_type_idx ON comments (name, type); CREATE INDEX comments_order_idx ON comments (domain_id, modified_at); CREATE TABLE domainmetadata ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, kind VARCHAR(32), content TEXT, PRIMARY KEY (id) ) Engine=InnoDB; CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind); CREATE TABLE cryptokeys ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, flags INT NOT NULL, active BOOL, content TEXT, PRIMARY KEY(id) ) Engine=InnoDB; CREATE INDEX domainidindex ON cryptokeys(domain_id); CREATE TABLE tsigkeys ( id INT AUTO_INCREMENT, name VARCHAR(255), algorithm VARCHAR(50), secret VARCHAR(255), PRIMARY KEY (id) ) Engine=InnoDB; CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
3、回到99.110机器上操作
在powerdns的配置文件中添加PowerDNS使用mariadb作为后台数据存储
#查找到包含launch= 的行,修改并添加下面的内容
vim /etc/pdns/pdns.conf # 250行
launch=gmysql
gmysql-host=192.168.99.150 #MySQL数据库的IP
gmysql-port=3306 #端口
gmysql-dbname=powerdns #数据库名
gmysql-user=powerdns #用户
gmysql-password=123 #密码
# 启动pdns服务
systemctl start pdns
systemctl enable pdns
4、安装httpd和php相关包
[root@centos7 ~]# yum -y install php-devel php-gd php-mcrypt php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mcrypt php-mhash gettext
#重启httpd服务
[root@centos7 ~]# systemctl start httpd
5、在网站的根目录内下载poweradmin程序,
[root@centos7 ~]# cd /var/www/html
[root@centos7 html]# ls
[root@centos7 html]# wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
6、解压压缩包并重命名
tar xf poweradmin-2.1.7.tgz
mv poweradmin-2.1.7 poweradmin
7、一会需要安装powerdns可能需要有写的权限,可以使用facl设置权限,方便撤销
[root@centos7 html]# setfacl -Rm u:apache:rwx poweradmin
8、使用浏览器访问httpd的powerdns页面进行安装:
第二步:这是第一次安装,点继续下一步
第三步:提示输入数据库的连接信息
第四步:填写powerdns的用户名和密码,还有域名,主域名服务器和从域名服务器,目前只有一台
第五步:提示需要在数据库中给某个用户授予相应的权限,根据提示在数据库中操作即可
第六步:按照提示修改powerdns的配置文件即可,先重命名一个新文件
[root@centos7 poweradmin]#cp inc/config-me.inc.php inc/config.inc.php [root@centos7 poweradmin]#vim inc/config.inc.php <?php $db_host = '192.168.99.150'; $db_user = 'powerdns'; $db_pass = '123'; $db_name = 'powerdns'; $db_type = 'mysql'; $db_layer = 'PDO'; $session_key = '}6!}-]pDYxRpWzPMrI18bUKQ*b@Dza}5mD4)&n1MlMB+F6'; $iface_lang = 'en_EN'; $dns_hostmaster = 'master.peter.com'; $dns_ns1 = '192.168.99.110'; $dns_ns2 = '192.168.99.110';
第七步:安装完成,并要求从Poweradmin根目录中删除install 否则无法登陆
如果不删除就不让登陆,我们删除目录后重新登录
[root@centos7 poweradmin]#pwd
/var/www/html/poweradmin
[root@centos7 poweradmin]#\rm -rf install/
删除后再次进行登录,然后输入用户名密码登录
1、添加一个主域
2、添加主域的信息,然后添加即可
3、点击域列表可以查看刚刚添加的主域信息,我们点编辑,添加一会要部署的wordpress博客站点的
3、添加一个A记录内容字段填写web1的IP地址然后添加即可,同样操作再添加一条记录指向另一台web服务器99.130
4、添加完之后可以点查询,输入域名看是否可以查看刚刚添加的两条记录
查看结果
三、配置NFS服务器
下面开始配置NFS,在主机99.140上操作
1、安装nfs软件
yum install -y nfs-utils
2、添加配置文件
[root@centos7 ~]#vim /etc/exports
/data/wordpress 192.168.99.0/24(rw,all_squash,anonuid=997,anongid=995)
#启动nfs服务
[root@centos7 ~]systemctl start nfs-server
3、创建网站使用的用户
groupadd -g 995 apache
useradd -r -u 997 -g 995 -s /sbin/nologin apache
4、部署wordpress网站,解压压缩包到本地的/data/目录并设置权限
tar xf wordpress-5.0.3-zh_CN.tar.gz -C /data/
rm -f wordpress-5.0.3-zh_CN.tar.gz
chown -R apache.apache /data/wordpress/
四、部署两台LAP并在本地NFS挂载
下面开始在120、130两台机子上部署LAP,先在120机器上安装apache和PHP,这里 使用yum安装,源码编译同样操作
1、安装包
[root@centos7 ~]# yum -y install php httpd php-mysql php-mbstring
2、修改httpd的配置文件
[root@centos7 ~]# vim /etc/httpd/conf.d/vhost.conf
<virtualhost *:80>
documentroot /data/wordpress
servername www.peter.com
<directory /data/wordpress>
require all granted
</directory>
</virtualhost>
#启动服务
[root@centos7 ~]# systemctl start httpd
4、安装nfs-utils挂载nfs共享目录
[root@centos7 ~]# yum -y install nfs-utils # 创建挂载的目录 [root@centos7 ~]# mkdir /data/wordpress # 把共享的wordpress目录挂载到本地的/data/wordpress [root@centos7 ~]# mount 192.168.99.140:/data/wordpress /data/wordpress
# 启动httpd服务
[root@centos7 ~]# systemctl start httpd
此时网站的目录已经通过nfs挂载到本地的目录了,然后从浏览器进行访问登录
先安装好一个,使用浏览器测试一下(我这里使用的是windows访问所以需要配置一下hosts文件,才可以使用域名直接访问,也可以直接使用IP进行访问)
下面就可以安装网站了
数据库和用户再之前已经创建好了,这里直接使用即可
填写完 点击安装即可
填写web站点的信息,然后安装
安装完成
此时wordpress博客已经搭建好, 可以正常使用了
另一台LAP机器配置完直接挂载到本地的没了即可,不需要在进行网站配置了
以上就是LAMP的详细步骤