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
相关文章:
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…...
七夕情人节特辑:程序员的浪漫惊喜,9个表白源码,甜蜜编程陪你过节
大家好呀👋,今天是中国的七夕情人节,一个充满浪漫与爱的日子。为了庆祝这个特别的节日,我为大家精心准备了9个表白专用的前端小项目。这些项目涵盖了“我爱你”网站、爱情表白网站和心形动画等,通过HTML、CSS和一点点J…...
Mask-Rcnn
一 、FPN层 FPN层的基本作用 基本网络架构 基本思想 将多个阶段特征图融合在一起,这就相当于既有了高层的语义特征,也有了低层的轮廓特征 二、RPN层 三、ROI Align层...
Python图像背景去除
目录 🎁库的导入 🎀库的安装 🎁rembg库去除背景 🎁效果 🎁文末彩蛋 今天来介绍一个特别有趣的python库,rembg库,全称是“Remove Background”的缩写,意为“去除背景”ÿ…...
【C语言篇】C语言常考及易错题整理DAY1
文章目录 C语言常考及易错题整理选择题全局、局部和静态变量#define与typedef转义字符操作符循环其他 编程题计算日期到天数转换柯尼希定理旋转数组的最小数字描述错误的集合整数转换密码检查 C语言常考及易错题整理 选择题 全局、局部和静态变量 执行下面程序,正…...
MySQL5.7之源码安装
文章目录 下载编译&打包初始化数据目录启动服务器更改/设置root密码 下载 下载地址:https://downloads.mysql.com/archives/community/ 推荐下载 All Operating Systems (Generic) (Architecture Independent), Compressed TAR ArchiveIncludes Boost Headers …...
【Linux学习 | 第3篇】Linux系统安装 jdk+Tomcat+MySQL+lrzsz
文章目录 Linux—day31. 软件安装方式2. 安装jdk3. 安装Tomcat3.1 安装步骤:3.2 防火墙操作3.3 停止Tomcat服务的方式 4. 安装MySQL5. 安装lrzsz5.1 操作步骤 Linux—day3 Linux系统中软件安装 1. 软件安装方式 二进制发布包安装:软件已经针对具体平台…...
python语言day5 MD5 json
md5: python提供了内置的md5加密功能,使用md5模拟一个小项目: 注册: 启动py程序,在控制台界面提示用户输入用户名及密码; 使用md5加密 密码; 创建txt文件记录输入的用户名 和密文。 登录&…...
【Python学习手册(第四版)】学习笔记19-函数的高级话题
个人总结难免疏漏,请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 本文主要介绍函数相关的高级概念:递归函数、函数注解、lambda表达式函数,常用函数工具如map、filter、reduce,以及通用的函数设…...
Selenium + Python 自动化测试11(unittest组织用例)
我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。 上一篇我们讨论了unittest基本使用方法。 本篇文章我们接着讲。一些概念和一些常用的构造测试集的方法。 1、基本概念 1)Test Case 一个Test Case的实例就是一个测…...
【唐氏题目 nt题】与众不同
# 与众不同 ## 题目描述 A是某公司的CEO,每个月都会有员工把公司的盈利数据送给A,A是个与众不同的怪人,A不注重盈利还是亏本,而是喜欢研究「完美序列」:一段连续的序列满足序列中的数互不相同。 A想知道区间[L,R]之…...
2000块的活嫌低?这个 6 位数的项目,你可不能错过哟!
2000块钱嫌低?这个6位数的项目,你可不能错过,关注有好礼。 最近写了一篇“接了一个2000块钱的活,大家看看值不值”的文章,发现流量和大家互动的热情出奇的高,可能是跟有钱有关的缘故,大家不是奔…...
【Postman工具】
一.接口扫盲 1.什么是接口? 接口是系统之间数据交互的通道。拿小红到沙县点餐为例:小红想吃鸭腿饭。她要用什么语言来表达?跟谁表达?通过什么表达?按照生活习惯应该是:小红根据菜单对服务员用中文表达她想要…...
全网超详细攻略-从入门到精通haproxy七层代理
目录 一.haproxy概述 1.1 haproxy简介 1.2 haproxy的主要特性 1.3 haproxy的优缺点 二.负载均衡介绍 2.1 什么是负载均衡 2.2 为什么用负载均衡 2.3 负载均衡类型 2.3.1 四层负载均衡 2.3.2 七层负载均衡 2.3.3 四层和七层的区别 三.haproxy的安装及服务 3.1 实验环…...
AI编程辅助工具:CodeGeeX 插件使用
CodeGeeX 插件使用 前言1.支持的平台2.安装步骤3.启用插件4.代码生成5.代码优化 前言 CodeGeeX 是一款基于 AI 技术的编程助手插件,旨在帮助开发者提高编程效率和代码质量。它能够智能生成代码、优化现有代码、自动生成文档以及回答编程相关的问题。无论您是初学者…...
sql注入实战——thinkPHP
sql注入实战——thinkPHP sql注入实战——thinkPHPthinkPHP前期环境搭建创建数据库开始寻找漏洞点输入SQL注入语句漏洞分析 实验错误 sql注入实战——thinkPHP thinkPHP前期环境搭建 下载thinkPHP文件 解压,将framework关键文件放到think-5.0.15中,改…...
MySQL 迁移 OceanBase 的 Oracle模式中,实现自增主键的方法
本文作者:赵黎明,爱可生 MySQL DBA 团队成员,熟练掌握Oracle、MySQL等数据库系统,擅长对数据库性能问题的诊断,以及事务与锁机制的分析等。负责解决客户在MySQL及爱可生自主研发的DMP平台日常运维中所遇到的各种问题&a…...
【C++ 面试 - 基础题】每日 3 题(十一)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…...
ESP8266在线升级OTA固件
OTA的基本实现方式: ESP8266 的 OTA 实现有几种方式,常用的方式包括: 1、Arduino OTA:使用Arduino IDE提供的OTA功能,可以直接通过Arduino IDE上传固件到ESP8266。 2、Web OTA:ESP8266运行一个简易的Web服…...
精通C++ STL(六):list的模拟实现
目录 类及其成员函数接口总览 结点类的模拟实现 构造函数 迭代器类的模拟实现 迭代器类存在的意义 迭代器类的模板参数说明 构造函数 运算符的重载 --运算符的重载 运算符的重载 !运算符的重载 *运算符的重载 ->运算符的重载 list的模拟实现 默认成员函数 构造函数 拷贝…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
