当前位置: 首页 > news >正文

LVS的简单配置及对Mysql主从复制的补充

Day 22

LVS的配置

========环境准备=======

DSN() 用来解析各主机的域名和ip地址,配置域名解析huajuan,负责管理其他主机

web1--->web1.tangpin.huajuan   

web2--->web2.tangpin.huajuan  

dns--->dns.tangpin.huajuan  

web1(192.168.2.200)  用nginx部署

web2(192.168.2.201)  用nginx部署

nat(添加一块网卡,ip为192.168.2.202,vip为192.168.2.203)

dns(192.168.2.204)

client(192.168.2.205)

# 正常来说应该配置两个不同的网段的ip,一个对外ip,一个对内的ip,现在只要使用nat的网络模式,可以配置桥接模式对外,nat对内,但也可将两个ip的网络模式均设置为vm2【nat】模式,并且保证物理机都能Ping通这两个ip。

Web主机

======web1=======

[root@web1 ~]# yum -y install nginx

[root@web1 ~]# echo  '====web1======' /usr/share/nginx/html/index.html

====web1====== /usr/share/nginx/html/index.html

[root@web1 ~]# nginx

[root@web1 ~]# ss -lntpu|grep 80

tcp    LISTEN     0      128       *:80                    *:*              users:(("nginx",pid=1575,fd=6),("nginx",pid=1574,fd=6))

tcp    LISTEN     0      128      :::80                   :::*                   users:(("nginx",pid=1575,fd=7),("nginx",pid=1574,fd=7))

浏览器访问进行测试,能看到重新编写的页面

======web2========

[root@web2 ~]# yum -y install nginx^C

[root@web2 ~]# echo '====web2======' /usr/share/nginx

====web2====== /usr/share/nginx/html/index.html

[root@web2 ~]# nginx

[root@web2 ~]# ss -lntpu|grep 80

tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=1837,fd=6),("nginx",pid=1836,fd=6))

tcp    LISTEN     0      128      :::80                   :::*                   users:(("nginx",pid=1837,fd=7),("nginx",pid=1836,fd=7))

======Nat主机=======

[root@nat ~]#ping nat.tangoin.huajuan

[root@nat ~]# yum -y install ntpdate

[root@nat ~]# ntpdate cn.ntp.org.cn

12 Aug 14:12:20 ntpdate[1580]: adjust time server 203.107.6.88 offset 0.011727 sec

[root@nat ~]# which ntpdate

/usr/sbin/ntpdate

[root@nat ~]# crontab -e

* 2 * * * /usr/sbin/ntpdate cn.ntp.org.cn

[root@dns ~]# crontab -l

30 2 * * * /usr/sbin/ntpdate 192.168.2.202

[root@nat ~]# yum -y install ntp

[root@nat ~]# systemctl start ntpd

[root@nat ~]# systemctl enable ntpd

Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.

======DNS服务搭建=======

1、安装bind软件

[root@DNS ~]# yum search bind  # 查询是否有bind  

[root@DNS ~]# yum -y install bind  # 安装

[root@DNS ~]#yum list installed|grep bind

[root@DNS ~]#rpm -ql bind

/etc/named.conf /etc/named.rfc1912.zones

[root@DNS ~]#systemctl start named

2、备份两个文件

[root@DNS ~]# cp /etc/named.conf /etc/named.conf.bak  

[root@DNS ~]# cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak

3、修改named.conf文件

[root@DNS ~]# vim /etc/named.conf

listen-on port 53 { 127.0.0.1;any; };

allow-query { localhost;any; };

[root@DNS ~]#systemctl restart named

[root@DNS ~]#vim /etc/named.rfc1912.zones

zone "tangpin.huajuan" IN {

type master;

         file "tangpin.huajuan.zone";

         allow-update { none; };

};

[root@DNS ~]# ls /var/named/

data     named.ca     named.localhost  slaves  dynamic  named.empty  named.loopback

4、创建文件,定义正向解析

[root@DNS ~]# cd /var/named/

[root@DNS named]# cp -p named.localhost tangpin.huajuan.zone

5、编辑域名文件

[root@DNS named]#vim tangpin.huajuan.zone

......

NS      @

        A       127.0.0.1

        AAAA    ::1

nat     A       192.168.2.202(nat主机的ip)  

xn      A       192.168.2.203(nat主机的虚拟ip)

web1    A       192.168.2.200(web1主机的ip)

web2    A       192.168.2.201(web2主机的ip)  

4、检查配置文件

[root@DNS named]# named-checkconf /etc/named.conf

[root@DNS named]# named-checkconf /etc/named.rfc1912.zones

[root@DNS named]# named-checkzone tangpin.huajuan.zone tangpin.huajuan.zone

[root@DNS named]# systemctl restart named

5、真机访问测试

依次ping web1.tangpin.huajuan、ping web2.tangpin.huajuan、ping nat.tangpin.huajuan

ping www.yuanyu.zhangmin

PING nat.tangpin.huajuan (192.168.2.202) 56(84) bytes of data.

64 bytes fromnat.tangpin.huajuan (192.168.2.202): icmp_seq=1ttl=64 time=0.011 ms

64 bytes from nat.tangpin.huajuan (192.168.2.202): icmp_seq=2ttl=64 time=0.026 ms

64 bytes from nat.tangpin.huajuan (192.168.2.202): icmp_seq=3ttl=64 time=0.022 ms

64 bytes from nat.tangpin.huajuan (192.168.2.202): icmp_seq=4ttl=64 time=0.043 ms

======client测试=======

[root@client ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33

DNS3=192.168.2.204  # 将DNS服务器ip地址(或者域名)添加进去

[root@DNS ~]# crontab -e

30 2 * * * /usr/sbin/ntpdate 192.168.2.202

======NAT模式搭建实战(nat主机)=======

# 安装ipvsadm

[root@dns ~]# yum -y install ipvsadm

# 清空之前的规则

[root@nat ~]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.2.203:80 rr

# 添加对外网的规则(vip)

[root@nat ~]# ipvsadm -A -t 192.168.2.203:80 -s rr

                        公网ip】

[root@nat ~]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.2.203:80 rr

# 添加对内网的规则

[root@nat ~]# ipvsadm -a -t 192.168.2.202:80 -r 192.168.2.200:80 -m

                          内网             web1

[root@nat ~]# ipvsadm -a -t 192.168.2.202:80 -r 192.168.2.200:80 -m

                          【内网】        web2】

Mysql主从复制补充

slave服务器不⼩⼼写⼊数据的解决⽅案

1. 正常情况下,master既可以读,也可以写,但是slave从服务器

只能读取操作,⼀旦我们在slave从服务器中写⼊数据,主从结

构会失败。

2. show slave status\G

3. 如果数据⽐较少,可以通过跳过当前语句的⽅式解决,但是如果从服务器写⼊的数据⽐较多,架构必须重新搭建

4. 可通过变量sql_slave_skip_counter临时跳过事务进⾏处理

mysql> set GLOBAL sql_slave_skip_counter=N # n代表跳过的n个事务

mysql> stop slave;

mysql> start slave;

5. 跳过事务应该在slave上运⾏

6. 传统的ab复制⽅式可以使⽤,基于GTIDs的⽅式不⽀持基于gtids的主从复制搭建

基于gtids的主从复制搭建

1. 什么是GTIDs

1)Global transaction identifiers 全局事务标识符,是mysql5.6新加⼊的技术

2)使⽤GTIDs时,每⼀个事务都可以被识别和个跟踪

3)添加的新的slave或者发⽣故障时,需要将master身份或者⻆⾊迁移到slave上时,都需要考虑哪⼀个⼆进制⽇志以及哪个position值,极⼤简化了相关操作。

4)GTIDs是完全基于事务的,因此不⽀持MYISAM存储引擎

5) GTIDs由source_id 和transaction组成;

source_id来源于server.uuid可以在auto.cnf中看到;tansaction_id 是⼀个序列数字,⾃动⽣成

2. 限制条件

1)不⽀持⾮事务引擎(MyISAM)因为可以回导致多个gtid分布给同⼀个事务

2)create table select语句不⽀持(主库语法报错)

3) create、drop temprary table语法不⽀持

4)必须使⽤enforce-gtid-consistency参数

5)sql-slave-skip-counter不⽀持

6) gtid复制环境中必须统⼀开启gtid或者关闭gtid

7)在5.7之前使⽤mysql upgrade命令也会出现问题

3. replication是基于传统的⽅式部署,并且已经在运⾏,利⽤已经

存在的环境升级⾄基于GTIDs的replication

1)修改配置⽂件,⽀持GTIDs(主从)

2)重启数据库(主从)

3)为了保证数据⼀直,master和slave都设置为只读

4)从服务器上重新配置同步

4. 实践步骤

1)修改配置⽂件⽀持GTIDs

=======master的配置=========

[mysqld]

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

socket=/tmp/mysql.sock

port=3306

log-error=/usr/local/mysql/data/db01-

master.err

log-bin=/usr/local/mysql/data/binlog

server-id=10

character_set_server=utf8mb4

gtid-mode=on

log-slave-updates=1

enforce-gtid-consistency

=======slave的配置=========

[mysqld]

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

socket=/tmp/mysql.sock

port=3310

log-error=/usr/local/mysql/data/db01-

slave.err

relay-log=/usr/local/mysql/data/relaylog

server-id=11

character_set_server=utf8mb4

log-bin=/usr/local/mysql/data/binlog

gtid-mode=on

log-slave-updates=1

enforce-gtid-consistency

skip-slave-start

2)重启启动mysql服务

[root@mysql001 ~]# service mysql8 restart

Shutting down MySQL.......... SUCCESS!

Starting MySQL.. SUCCESS!

[root@slave ~]# service mysql8 restart

Shutting down MySQL.. SUCCESS!

Starting MySQL... SUCCESS!

3)主从配置只读模式

mysql> set @@global.read_only=ON;

Query OK, 0 rows affected (0.00 sec)

mysql> set @@global.read_only=ON;

Query OK, 0 rows affected (0.00 sec)

4) slave重新配置change master to

mysql> stop slave;

mysql> reset slave;

mysql> change master to

-> master_host='10.1.1.100',

-> master_user='slave',

-> master_password='slave_123',

-> master_port=3306,

-> master_auto_position=1;

Query OK, 0 rows affected, 8 warnings (0.01sec)

mysql> start slave;

mysql> show slave status\G

5)关闭主从服务器的只读模式

mysql> set @@global.read_only=OFF;

Query OK, 0 rows affected (0.00 sec)

mysql> set @@global.read_only=OFF;

Query OK, 0 rows affected (0.00 sec)

6)获得公钥

[root@slave ~]# mysql -uslave -pslave_123 -h

10.1.1.100 -P3306 --get-server-public-key

mysql: [Warning] Using a password on the

command line interface can be insecure.

Welcome to the MySQL monitor. Commands end

with ; or \g.

Your MySQL connection id is 11

Server version: 8.0.33 MySQL Community

Server - GPL

Copyright (c) 2000, 2023, Oracle and/or its

affiliates.

Oracle is a registered trademark of Oracle

Corporation and/or its

affiliates. Other names may be trademarks of

their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to

clear the current input statement.

mysql> quit

Bye

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 食品零食小吃商城管理系统-计算机毕设Java|springboot实战项目
  • 求职Leetcode算法题(7)
  • c语言基础知识学习
  • 井字棋游戏(HTML+CSS+JavaScript)
  • Java的反射原理
  • 天途推出无人机软硬件定制服务
  • Velero 快速上手:使用 Velero 实现 Kubernetes 集群备份与迁移
  • Java设计模式-责任链模式
  • 酷炫时尚未来科技视频开头PR模板MOGRT
  • zabbix的setup无法进入第二步
  • 单细胞irGSEA分析:整合多种富集分析方式的R包
  • 数据中台之数据开发-离线开发和实时开发
  • 超级外链工具,可发9600条优质外链
  • Linux--传输层协议UDP
  • 排序算法之堆排序
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • 2017届校招提前批面试回顾
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • mongo索引构建
  • Solarized Scheme
  • spring boot 整合mybatis 无法输出sql的问题
  • vuex 笔记整理
  • Vue--数据传输
  • 前端技术周刊 2019-02-11 Serverless
  • 思考 CSS 架构
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 智能网联汽车信息安全
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • Android开发者必备:推荐一款助力开发的开源APP
  • 容器镜像
  • 移动端高清、多屏适配方案
  • (二)windows配置JDK环境
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (算法设计与分析)第一章算法概述-习题
  • (一)kafka实战——kafka源码编译启动
  • (转)linux 命令大全
  • (转载)Linux网络编程入门
  • (轉)JSON.stringify 语法实例讲解
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .bat批处理(一):@echo off
  • .dwp和.webpart的区别
  • .FileZilla的使用和主动模式被动模式介绍
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .Net Core中Quartz的使用方法
  • .NET 项目中发送电子邮件异步处理和错误机制的解决方案
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .net反编译工具
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • @ConfigurationProperties注解对数据的自动封装
  • @font-face 用字体画图标