POWERDNS + LVS + LAMP + NFS + MYSQL主从读写分离
文章目录
- 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 的搭建
- 实现web界面管理dns
- 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主从读写分离相关推荐
- mysql查询并设置高亮_Thinkphp3.2.3设置MySql主从读写分离后,简单调用主数据库查询
图/文:迷神 Thinkphp是一款不错的国产框架,使用范围广,应用也比较多.随着网站访问增大往往需要使用mysql主从同步功能,本身Thinkphp自带了主从读写分离的功能了. 但是我们经常有一个场 ...
- Amoeba实现mysql主从读写分离
Amoeba实现mysql主从读写分离 这段在网上看了下关于amoeba的文章,总体感觉好像要比mysql-proxy好的多,也参考了不少的资料,此文章可能与其他文章作者会有雷同的地方,请谅解,但是此 ...
- 综合实验:LVS+LAMP+NFS+MySQL读写分离
目录 客户端配置 路由器配置 配置powerDNS 防火墙 107~109:mysql主从半同步复制 106:布署ProxySQL 105:NFS配置 105:布署wordpress 104:webB ...
- amoeba实现mysql主从读写分离_利用Amoeba实现MySQL主从复制和读写分离
在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性.高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制(Master-Slave) ...
- web集群综合项目keepalived+lvs+lamp+nfs+mysql
web集群综合项目 实验描述: 在此项目中,为了使公司内部的web站点提供更稳定的服务,搭建负载均衡群集以及故障转移群集,具体拓扑环境如下: 实验环境: 主机 Ip地址 软件 主调度器 192.168 ...
- 通过proxysql实现MySQL主从读写分离
原文: https://www.yuque.com/wei01/wql35u/wbgk1a 自行部署MySQL主从环境 安装proxysql # 安装依赖包 yum install gnutls pe ...
- mysql主从-读写分离
一个完整的MySQL读写分离环境包括以下几个部分: 应用程序client database proxy database集群 在本次实战中,应用程序client基于c3p0连接后端的database ...
- django给mysql配主从_django中的mysql主从读写分离:一、配置mysql主从分离
一.配置mysql主从同步的步骤: (1) 在主服务器上,必须开启二进制日志机制和配置一个独立的ID (2) 在每一个从服务器上,配置一个唯一的ID,创建一个用来专门复制主服务器数据的账号 (3) 在 ...
- Centos7源码安装mysql及读写分离,互为主从
Linux服务器 -源码安装mysql 及读写分离,互为主从 一.环境介绍: Linux版本: CentOS 7 64位 mysq版本: mysql-5.6.26 这是我安装时所使用的版本, ...
最新文章
- MIT与FAIR提出「mixup」,利用数据和标签的随机线性插值提高神经网络的健壮性
- 解码大脑:在脑机接口上寻求稳定性
- 微信小程序(11)--购物车
- js php 中文乱码怎么解决_探讨PHP JSON中文乱码的解决方法详解
- wxWidgets:wxAutomationObject类用法
- MongoDB 里面日期查询的问题
- 我的世界java版forge怎么用_我的世界电脑版MOD怎么用 我的世界pc版forge怎么安装...
- 2017.4.25 解方程 思考记录
- 【音频处理】如何“认识”一个滤波器?
- 一些gassian分布假设的,并假设均值依赖于隐藏层,方差固定的模型
- 案例学习BlazeDS+Spring之三InSync01查找联系人
- 传输层协议(13):拥塞控制(2)
- 静态路由绑定探测组功能的配置
- ens2sym <- select(org.Hs.eg.db, keys=row.names(pc9_removebatch_b12),columns=c(“ENTREZID“,“SYMBOL“),
- mbr转gpt 无损 linux,无损 MBR转换为GPT加快启动
- 使用Unity3D引擎制作塔防类游戏(一)
- 梅西 (Lionel Messi)
- linux下nginx配置访问静态图片的解决办法
- Audio in Windows Vista(转载)
- python编写自定义函数print_triangle(n)_Python 实验8 函数(1).doc