日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

POWERDNS + LVS + LAMP + NFS + MYSQL主从读写分离

發布時間:2024/1/8 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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主从读写分离的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。