实验环境:(共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=
log-bin
[root@centos7 ~]#systemctl start mariadb

2、查看主节点的pos位置点并创建从节点复制同步时使用的用户账号

MariaDB [(none)]> show master status;
MariaDB [(none)]> grant replication slave on *.* to repluser@'%' identified by '';

两个从节点:160,170同样的操作

1、在配置文件中添加各自的server-id号,然后向主节点使用刚刚创建的复制账号进行同步操作

[root@centos7 ~ ]#vim /etc/my.cnf
[mysqld]
server-id=
#启动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机器同样的操作

3、下面配置实现半同步操作:安装插件

主节点150:

①安装主节点使用master端的插件

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端的插件:

④ 安装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";

二、部署搭建PowerDNS

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 '';
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= #端口
gmysql-dbname=powerdns #数据库名
gmysql-user=powerdns #用户
gmysql-password= #密码
# 启动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..tgz
mv poweradmin-2.1. poweradmin

7、一会需要安装powerdns可能需要有写的权限,可以使用facl设置权限,方便撤销

 [root@centos7 html]# setfacl -Rm u:apache:rwx poweradmin

8、使用浏览器访问httpd的powerdns页面进行安装:

    http://192.168.99.110/poweradmin/install/

第一步:选择语言,然后继续

第二步:这是第一次安装,点继续下一步

第三步:提示输入数据库的连接信息

第四步:填写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 = '';
$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/(rw,all_squash,anonuid=,anongid=)
#启动nfs服务
[root@centos7 ~]systemctl start nfs-server

3、创建网站使用的用户

 groupadd -g  apache
useradd -r -u -g -s /sbin/nologin apache

4、部署wordpress网站,解压压缩包到本地的/data/目录并设置权限

 tar xf wordpress-5.0.-zh_CN.tar.gz -C /data/
rm -f wordpress-5.0.-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 *:>
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的详细步骤

搭建PowerDNS+LAP+NFS+MySQL主从半节点同步实现LAMP架构的更多相关文章

  1. mysql主从数据库不同步的2种解决方法(转)

    今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常. show master status; ...

  2. mysql 主从 配置和同步管理

    首先呢,需要有两个mysql服务器.如果做测试的话可以在同一台机器上装两个mysql服务程序,注意要两个运行程序的端口不能一样.我用的是一个是默认的3306,从服务器用的是3307端口. 在主服务创建 ...

  3. mysql主从数据库不同步的2种解决方法 (转载)

    今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常. show master status; ...

  4. mysql主从(主备)同步一键配置,配自动检测功能

    主从一键shell配置 做个笔记. #!/bin/bash #Mysql sync #chenglee #master机器ip MasterIP="192.168.137.174" ...

  5. 搭建WEB、NFS共享、sersync实时同步以及全网定时备份服务流程

    本次实验的主要目的: 1.搭建web服务,使用nfs服务共享的/data目录挂载到web站点目录上. 2.nfs服务器与backup服务器使用sersync实时同步/data目录中的文件. 3.bac ...

  6. Mysql 主从服务器数据同步

    安装2台windows Server 服务器,分别安装Mysql,配置环境变量,完成安装确认在CMD窗口可以使用Mysql命令 在Master服务器上创建同步账号,确保Slave服务器能访问Maste ...

  7. Mysql主从同步(1) - 概念和原理介绍 以及 主从/主主模式 部署记录

    Mysql复制概念Mysql内建的复制功能是构建大型高性能应用程序的基础, 将Mysql数据分布到多个系统上,这种分布机制是通过将Mysql某一台主机数据复制到其它主机(slaves)上,并重新执行一 ...

  8. MySQL主从延迟如何解决?

    我们知道生产环境中经常会遇到MySQL主从延迟问题,从原理上也能看出主库的事务提交是并发模式,而从库只有一个SQL线程负责解析,所以本身上就可能存在延迟. 延迟的主要原因在于: 1.从库的配置往往没有 ...

  9. MySQL主从异常恢复

    说明 MySQL主从出现不同步的情况时,或者要添加新的从库时,可以使用以下方法进行操作回复主从. 停止业务应用 停止所有连接到主从库上的应用,在恢复主从期间禁止任何增删改等操作,否则恢复失败 停止主从 ...

随机推荐

  1. SpringBoot从入门到精通十一(SpringBoot文件上传的两种方法)

    前言 在企业级项目开发过程中,上传文件是最常用到的功能.SpringBoot集成了SpringMVC,当然上传文件的方式跟SpringMVC没有什么出入. 本章目标 使用SpringBoot项目完成单 ...

  2. 在C#中用静态类来扩展类的方法

    目录 在C#中用静态类来扩展类的方法 1.待扩展类 2.用于扩展的静态类中的静态方法 3 静态扩展方法的调用 4 适用场景 在C#中用静态类来扩展类的方法 1.待扩展类 private IList&l ...

  3. vs 编译说明

    静态编译/MT,/MTD 是指使用libc和msvc相关的静态库(lib).   动态编译,/MD,/MDd是指用相应的DLL版本编译.   其中字母含义  d:debug    m:multi-th ...

  4. 黑马程序员_ADO.Net(ExecuteReader,Sql注入与参数添加,DataSet,总结DataSet与SqlDataReader )

    转自https://blog.csdn.net/u010796875/article/details/17386131 一.执行有多行结果集的用ExecuteReader SqlDateReader  ...

  5. SQL Server温故系列(4):SQL 查询之集合运算 & 聚合函数

    1.集合运算 1.1.并集运算 UNION 1.2.差集运算 EXCEPT 1.3.交集运算 INTERSECT 1.4.集合运算小结 2.聚合函数 2.1.求行数函数 COUNT 2.2.求和函数 ...

  6. 使用NLog记录业务日志到数据库

    项目中很多时候要记录业务日志,其实是可以直接用日志框架计入数据库的. 使用NLog并不是只能将日志主体插入数据库,而是可以根据实际情况自定义任意列记入.非常方便.而且很容易实现 下面是用NLog记录业 ...

  7. core文件生成和路径设置

    在程序崩溃时,内核会生成一个core文件,即程序最后崩溃时的内存映像,和程序调试信息. 之后可以通过gdb,打开core文件察看程序崩溃时的堆栈信息,可以找出程序出错的代码所在文件和函数. 1.cor ...

  8. Codeforces Gym101170J:Jupiter Orbiter(最大流)

    题目链接 题意 有n次事件,q个队列,s个传感器.每个传感器接到一个队列,每个队列有一个容量. 接下来执行n次事件,每次事件都会有一个最大发送数据量d.和s个数据a,代表这次给每个s填入a的数据量. ...

  9. HDU 1007:Quoit Design(分治求最近点对)

    http://acm.hdu.edu.cn/showproblem.php?pid=1007 题意:平面上有n个点,问最近的两个点之间的距离的一半是多少. 思路:用分治做.把整体分为左右两个部分,那么 ...

  10. 洛谷P1003 铺地毯 noip2011提高组day1T1

    洛谷P1003 铺地毯 noip2011提高组day1T1 洛谷原题 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n ...