当前位置: 首页 > 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

相关文章:

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”的缩写,意为“去除背景”&#xff…...

【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的模拟实现 默认成员函数 构造函数 拷贝…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...