文章目录

  • client 的配置
  • 路由器的配置
  • powerdns 的搭建
  • firewall 的配置
  • LVS-DR 模式的配置
    • lvs服务器的配置
    • web服务器的配置
  • 配置 mysql主从读写分离
    • MySQL 主从配置
    • proxysql 实现 mysql 主从分离
  • NFS 的配置
  • 部署 discuz
  • 测试

client 的配置

[client]#

nmcli connection modify ens33 ipv4.addresses 192.168.1.8/24 ipv4.dns 192.168.2.200 ipv4.gateway 192.168.1.9
nmcli connection reload
nmcli connection up ens33

路由器的配置

[route]#

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j SNAT --to-source 192.168.2.254

powerdns 的搭建

  1. 实现web界面管理dns
  2. dns中的信息保存在数据库中

安装包

[powerDNS]#

yum -y --enablerepo=aliyun  --enablerepo=aliyun_epel install httpd php php-devel php-gd php-mcrypt php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext php-mysql pdns pdns-backend-mysql mariadb-server

配置文件

[powerDNS]#

vim /etc/pdns/pdns.conf
launch=gmysql
gmysql-host=localhost
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=centos

创建powerdns数据库中的表

[powerDNS]#

mysql -e "create database powerdns;grant all on powerdns.* to powerdns@localhost identified by 'centos';"
mysql
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);

启动服务

[powerDNS]#

systemctl enable --now pdns httpd mariadb

下载poweradmin-2.1.7.tgz程序,并解压缩到相应目录

cd /var/www/html
tar xvf poweradmin-2.1.7.tgz
mv poweradmin-2.1.7 poweradmin

安装 poweradmin web管理界面


再次使用浏览器:192.168.2.200/poweradmin 进行创建



测试dns是配置成功

firewall 的配置

iptables -t nat -A PREROUTING -d 192.168.2.100 -p tcp --dport 80 -j DNAT --to-destination 192.168.43.100
iptables-save > /data/iptables.rules
echo "iptables-restore < /data/iptables.rules" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.localecho "net.ipv4.ip_forward =1 " >> /etc/sysctl.conf
sysctl -p

LVS-DR 模式的配置

lvs服务器的配置

安装 ipvsadm

nmcli connection modify ens33 ipv4.gateway 192.168.43.26 ipv4.address 192.168.43.7/24
nmcli connection reload
nmcli connection up ens33
yum install ipvsadm -y

配置文件

ipvsadm -A -t 192.168.43.100:80  -s rr
ipvsadm -a -t 192.168.43.100:80  -r 192.168.43.17 -g
ipvsadm -a -t 192.168.43.100:80  -r 192.168.43.27 -g
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl enable --now ipvsadm.service

配置vip

ip addr add 192.168.43.100/32 dev lo label lo:1
echo "ip addr add 192.168.43.100/32 dev lo label lo:1" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

web服务器的配置

安装包

yum install php httpd php-mysql nfs-utils -y

配置文件

vim /etc/httpd/conf.d/discuz.xuepeng.com.conf
<virtualhost *:80>documentroot "/data/discuz"servername discuz.xuepeng.com<directory "/data/discuz">require all granted<\directory>
</virtualhost>

启动服务

mkdir /data/discuz
httpd -t
systemctl enable --now httpd

vip的配置

ip addr add 192.168.43.100/32 dev lo label lo:1

设置arp

vim /etc/sysctl.confnet.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2net.ipv4.conf.all.arp_announce = 2
sysctl -p

配置 mysql主从读写分离

MySQL 主从配置

mysql master配置

配置文件,启动

yum install mariadb-server -y
vim /etc/my.cnfserver_id=6log_binsystemctl enable --now mariadb

配置用于同步的帐号

mysql -e "grant replication slave on *.* to replication@'192.168.43.%' identified by 'replication';flush privileges;"

查看 二进进制日志的文件信息

mysql slave的配置

yum install mariadb-server -y
vim /etc/my.cnfserver_id=16read_onlysystemctl enable --now mariadb
mysql
MariaDB [(none)]> CHANGE MASTER TO->   MASTER_HOST='192.168.43.6',->   MASTER_USER='replication',->   MASTER_PASSWORD='replication',->   MASTER_PORT=3306,->   MASTER_LOG_FILE='mariadb-bin.000001',->   MASTER_LOG_POS=818;
MariaDB [(none)]> start slave;

proxysql 实现 mysql 主从分离

准备包
[proxysql]#

安装包
[proxysql]#

yum install *.rpm -y

启动服务,进入管理接口,向ProxySQL中添加MySQL节点
[proxysql]#

service proxysql start
chkconfig proxysql on
mysql -uadmin -padmin -P6032 -h127.0.0.1
insert into mysql_servers(hostgroup_id,hostname,port) values(20,'192.168.43.16',3306);
insert into mysql_servers(hostgroup_id,hostname,port) values(10,'192.168.43.6',3306);
load mysql servers to runtime;
save mysql servers to disk;

添加监控后端节点的用户
[mysql_master]#

grant replication client on *.* to monitor@'192.168.43.%' identified by 'monitor';

ProxySQL上配置监控用户
[proxysql]#

set mysql-monitor_username='monitor';
set mysql-monitor_password='monitor';
load mysql variables to runtime;
save mysql variables to disk;

监控模块的指标保存在monitor库的log表中
查看监控连接是否正常的 (对connect指标的监控):(如果connect_error的结果为NULL则表示正常)

测试后端服务器是否正常

分组信息
[proxysql]#

insert into mysql_replication_hostgroups values(10,20,"test");
load mysql servers to runtime;
save mysql servers to disk;

查看分组信息
[proxysql]#

select hostgroup_id,hostname,port,status,weight from mysql_servers;


配置发送SQL语句的用户
[mysql_master]#

grant all on *.* to sqluser@'192.168.43.%' identified by 'sqluser';

[proxysql]#

insert into mysql_users(username,password,default_hostgroup)values('sqluser','sqluser',10);
load mysql users to runtime;
save mysql users to disk;

创建路由规则
[proxysql]#

insert into mysql_query_rules (rule_id,active,match_digest,destination_hostgroup,apply)values(1,1,'^SELECT.*FOR UPDATE$',10,1),(2,1,'^SELECT',20,1);
load mysql query rules to runtime;
save mysql query rules to disk;

查看路由规则

授权一个数据库用户用于网站数据写入数据库时用
[mysql_master]#

MariaDB [(none)]> create database discuz;
MariaDB [(none)]> grant all on discuz.* to discuz@'192.168.43.%' identified by "discuz";
MariaDB [(none)]> flush privileges;

[proxysql]#

insert into mysql_users(username,password,default_hostgroup) values('discuz','discuz',10);
load mysql users to runtime;
save mysql users to disk;

NFS 的配置

yum install nfs-utils -y
mkdir /data/discuz
groupadd -g 48 apache
useradd -u 48 -g 48 -s /sbin/nologin apachevim /etc/exports
/data/discuz 192.168.43.27(rw,all_squash,anonuid=48,anongid=48)
/data/discuz 192.168.43.17(rw,all_squash,anonuid=48,anongid=48)systemctl enable --now nfs
exportfs -arv

web服务器查看共享,挂载

showmount -e 192.168.43.37 Export list for 192.168.43.37:/data/discuz 192.168.43.17,192.168.43.27
echo "192.168.43.37:/data/discuz /data/discuz nfs defaults 0 0" >> /etc/fstab
mount -a

部署 discuz

[NFS]#

cd /usr/local/src
rz   // Discuz_X3.2_SC_UTF8.zip
unzip Discuz_X3.2_SC_UTF8.zip
ls

cp -r upload/* /data/discuz/
chown -R apache.apache /data/discuz/

需要一个数据库用户用于网站数据写入数据库时用

在任意一台apache服务器上部署都可以,因为数据是写入数据库的
[apache]#


测试

[client]#

POWERDNS + LVS + LAMP + NFS + MYSQL主从读写分离相关推荐

  1. mysql查询并设置高亮_Thinkphp3.2.3设置MySql主从读写分离后,简单调用主数据库查询

    图/文:迷神 Thinkphp是一款不错的国产框架,使用范围广,应用也比较多.随着网站访问增大往往需要使用mysql主从同步功能,本身Thinkphp自带了主从读写分离的功能了. 但是我们经常有一个场 ...

  2. Amoeba实现mysql主从读写分离

    Amoeba实现mysql主从读写分离 这段在网上看了下关于amoeba的文章,总体感觉好像要比mysql-proxy好的多,也参考了不少的资料,此文章可能与其他文章作者会有雷同的地方,请谅解,但是此 ...

  3. 综合实验:LVS+LAMP+NFS+MySQL读写分离

    目录 客户端配置 路由器配置 配置powerDNS 防火墙 107~109:mysql主从半同步复制 106:布署ProxySQL 105:NFS配置 105:布署wordpress 104:webB ...

  4. amoeba实现mysql主从读写分离_利用Amoeba实现MySQL主从复制和读写分离

    在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性.高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制(Master-Slave) ...

  5. web集群综合项目keepalived+lvs+lamp+nfs+mysql

    web集群综合项目 实验描述: 在此项目中,为了使公司内部的web站点提供更稳定的服务,搭建负载均衡群集以及故障转移群集,具体拓扑环境如下: 实验环境: 主机 Ip地址 软件 主调度器 192.168 ...

  6. 通过proxysql实现MySQL主从读写分离

    原文: https://www.yuque.com/wei01/wql35u/wbgk1a 自行部署MySQL主从环境 安装proxysql # 安装依赖包 yum install gnutls pe ...

  7. mysql主从-读写分离

    一个完整的MySQL读写分离环境包括以下几个部分: 应用程序client database proxy database集群 在本次实战中,应用程序client基于c3p0连接后端的database ...

  8. django给mysql配主从_django中的mysql主从读写分离:一、配置mysql主从分离

    一.配置mysql主从同步的步骤: (1) 在主服务器上,必须开启二进制日志机制和配置一个独立的ID (2) 在每一个从服务器上,配置一个唯一的ID,创建一个用来专门复制主服务器数据的账号 (3) 在 ...

  9. Centos7源码安装mysql及读写分离,互为主从

       Linux服务器 -源码安装mysql 及读写分离,互为主从   一.环境介绍: Linux版本: CentOS 7 64位 mysq版本: mysql-5.6.26 这是我安装时所使用的版本, ...

最新文章

  1. MIT与FAIR提出「mixup」,利用数据和标签的随机线性插值提高神经网络的健壮性
  2. 解码大脑:在脑机接口上寻求稳定性
  3. 微信小程序(11)--购物车
  4. js php 中文乱码怎么解决_探讨PHP JSON中文乱码的解决方法详解
  5. wxWidgets:wxAutomationObject类用法
  6. MongoDB 里面日期查询的问题
  7. 我的世界java版forge怎么用_我的世界电脑版MOD怎么用 我的世界pc版forge怎么安装...
  8. 2017.4.25 解方程 思考记录
  9. 【音频处理】如何“认识”一个滤波器?
  10. 一些gassian分布假设的,并假设均值依赖于隐藏层,方差固定的模型
  11. 案例学习BlazeDS+Spring之三InSync01查找联系人
  12. 传输层协议(13):拥塞控制(2)
  13. 静态路由绑定探测组功能的配置
  14. ens2sym <- select(org.Hs.eg.db, keys=row.names(pc9_removebatch_b12),columns=c(“ENTREZID“,“SYMBOL“),
  15. mbr转gpt 无损 linux,无损 MBR转换为GPT加快启动
  16. 使用Unity3D引擎制作塔防类游戏(一)
  17. 梅西 (Lionel Messi)
  18. linux下nginx配置访问静态图片的解决办法
  19. Audio in Windows Vista(转载)
  20. python编写自定义函数print_triangle(n)_Python 实验8 函数(1).doc

热门文章

  1. linux服务器 ip地址,查看linux服务器的IP地址
  2. 3.4.7nbsp;安迪·格鲁夫
  3. validate.js 插件表单校验
  4. 基于51单片机的智能花盆测控(温湿度、光照)【仿真资料-126】
  5. 【区块链108将】流量之王的48小时生死转折
  6. c语言实现学生档案管理系统
  7. STM32定时器输入捕获,脉宽测量知识点
  8. 学习笔记——Python输入与输出
  9. SpringBoot源码分析(二)之自动装配demo
  10. 文件变成chk如何恢复正常