IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> -ipvsadm -arptables -keepalived -haproxy -> 正文阅读

[系统运维]-ipvsadm -arptables -keepalived -haproxy

ipvsadm

1、准备

三台虚拟机、需要ipvsadm、keepalived、arptables安装包 linux7.6自带、别的不清楚。

现有问题:用1做调度器 服务端是server2、server3。
怎样让真实主机 去访问一个虚拟ip能分配到server2、server3

方法: linux的内核管理,加上策略 在server2、server3上,让虚拟ip不能输出、不能让别的主机缓存。 #自己去看,查资料,我也得学习、得会把大概意思讲解出来(面试用)
arptables程序包策略管理 本次运用。

本次用到相关知识:七层模型、ARP协议、VIP协议、keepalived双组访问

-ipvsadm 与 -arptables

在server1上 安装ipvsadm 并添加虚拟ip

[root@server1 ~]# ip addr add 172.25.111.100/24 dev eth0
[root@server1 ~]# ipvsadm -A -t 172.25.111.100:80 -s rr
[root@server1 ~]# ipvsadm -a -t 172.25.111.100:80 -r 172.25.111.2:80 -g
[root@server1 ~]# ipvsadm -a -t 172.25.111.100:80 -r 172.25.111.3:80 -g

在server2、server3和server1 上下载httpd并开启、同样加上相同的虚拟ip 过程略!!!

问题出现了:在同一个…(一个专业术语,大概意思是在一个网域中) ,同一个虚拟ip你怎样确保你访问的是调度器server1???) 概率都是一样的,第一次到server3上去它就不回来了(牵扯七层或四层模型),要你的server1调度器有什么用,还占用成本。

解决办法:使用arptables(涉及ARP协议) arptables是ARP工具之一

arptables简介

arptables是用户空间工具,用来管理 linux内核中的ARP规则表.这些规则用来
检查ARP帧.arptables类似于iptables,但没有那么复杂.iptables工作于ip层,
用于对ip包进行管理.arptables工作与arp协议层,用于对arp数据帧进行管理.
arptables可以像iptables那样对arp数据帧进行各种规则设置,可以ACCEPT,
DROP等.

server2和server3上安装arptables

server2和server3    
			 yum install arptables -y
[root@server2 ~]# arptables -A OUTPUT -s 172.25.111.100 -j mangle --mangle-ip-s 172.25.111.2
[root@server2 ~]# arptables -A INPUT -d 172.25.111.100 -j DROP
[root@server3 ~]# arptables -A OUTPUT -s 172.25.111.100 -j mangle --mangle-ip-s 172.25.111.3
[root@server3 ~]# arptables -A INPUT -d 172.25.111.100 -j DROP
[root@server3 ~]# systemctl start arptables.service
[root@server2 ~]# systemctl start arptables.service	
[root@server2 ~]# arptables-save > /etc/sysconfig/arptables 
[root@server2 ~]# cat /etc/sysconfig/arptables
*filter
:INPUT ACCEPT
:OUTPUT ACCEPT
:FORWARD ACCEPT
-A INPUT -j DROP -d 172.25.111.100 
-A OUTPUT -j mangle -s 172.25.111.100 --mangle-ip-s 172.25.111.2 
		server3同上
[root@server1 ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
[root@server1 ~]# cat /etc/sysconfig/ipvsadm
-A -t 172.25.111.100:80 -s rr
-a -t 172.25.111.100:80 -r 172.25.111.2:80 -g -w 1
-a -t 172.25.111.100:80 -r 172.25.111.3:80 -g -w 1
[root@server1 ~]# lsmod |grep ip_vs
ip_vs_rr               12600  1 
ip_vs                 145497  3 ip_vs_rr
nf_conntrack          133095  1 ip_vs
libcrc32c              12644  3 xfs,ip_vs,nf_conntrack

修改httpd发布页   server1、3   同理
[root@server2 ~]# cat /var/www/html/index.html 
server2



在这里插入图片描述

-keepalived

[root@server1 ~]# yum install keepalived -y
[root@server1 ~]# cd /etc/keepalived/
[root@server1 keepalived]# ls
a.out  keepalived.conf
[root@server1 keepalived]# vim keepalived.conf 

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[root@server1 keepalived]# ip addr del 172.25.111.100/24 dev eth0
[root@server1 keepalived]# ipvsadm -C
[root@server1 keepalived]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@server1 keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:2d:76:d8 brd ff:ff:ff:ff:ff:ff
    inet 172.25.111.1/24 brd 172.25.111.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe2d:76d8/64 scope link 
       valid_lft forever preferred_lft forever

关闭其中一个 httpd

[root@foundation111 Desktop]# curl 172.25.111.100
server2
[root@foundation111 Desktop]# curl 172.25.111.100
server3
[root@foundation111 Desktop]# curl 172.25.111.100
curl: (7) Failed to connect to 172.25.111.100 port 80: Connection refused
[root@foundation111 Desktop]# curl 172.25.111.100
server3
[root@foundation111 Desktop]# curl 172.25.111.100
curl: (7) Failed to connect to 172.25.111.100 port 80: Connection refused
[root@foundation111 Desktop]# curl 172.25.111.100
server3
[root@foundation111 Desktop]# curl 172.25.111.100
curl: (7) Failed to connect to 172.25.111.100 port 80: Connection refused
[root@foundation111 Desktop]# curl 172.25.111.100
server3
[root@foundation111 Desktop]# curl 172.25.111.100
server3
[root@foundation111 Desktop]# curl 172.25.111.100
server3
[root@foundation111 Desktop]# curl 172.25.111.100
server3
[root@foundation111 Desktop]# curl 172.25.111.100
server3

结果比较顺畅的让server3 接管服务

现有问题如果 调度器server1 没了(在有另一台备用时,能否接管调度) server4

[root@server4 ~]# yum install -y keepalived
[root@server4 ~]# yum install -y ipvsadm
[root@server1 keepalived]# scp keepalived.conf  server4:/etc/keepalived/
[root@server4 keepalived]# vim keepalived.conf 
###...					###进行一些修改,我flameshot用不了了,很烦!
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 162
    priority 50
###...

[root@server4 keepalived]# systemctl start keepalived.service 
[root@server4 keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:38:d0:05 brd ff:ff:ff:ff:ff:ff	     ##虚拟ip  看下面
    inet 172.25.111.4/24 brd 172.25.111.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 172.25.111.100/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe38:d0:05/64 scope link 
       valid_lft forever preferred_lft forever
[root@server4 keepalived]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.111.100:80 rr
  -> 172.25.111.2:80              Route   1      0          0         
  -> 172.25.111.3:80              Route   1      0          0         
You have new mail in /var/spool/mail/root

把server1 down掉看效果

[root@server1 keepalived]# systemctl stop keepalived.service 
[root@foundation111 Desktop]# arp -an |grep 100 
? (172.25.111.100) at 52:54:00:38:d0:05 [ether] on br0          ##虚拟ip   看上面  是server4的
接管很平滑  很快的

server1修好了(重启),他又将调度权给争夺回来

-haproxy:基本启用-调度器、调度算法、日志设置、网页管理账户设置、关键字(.****结尾的)、给你专用的接口、黑白名单及其重定向、读写分离。 #都要改配置文件 /etc/haproxy/haproxy.cfg

前提:关掉keepalived、ipvsadm 、在以上的基础上实验完成,server2、server3 的arptables得保留,httpd服务开启

a、基本启用-调度器

systemctl stop keepalived
yum install -y haproxy.x86_64
cd /etc/haproxy
vim haproxy.cfg #修改配置文件
在这里插入图片描述
在这里插入图片描述systemctl start haproxy.service
systemctl status haproxy.service
可以在浏览器上查看:http://172.25.111.1/status
在这里插入图片描述

b、调度算法

在这里插入图片描述重启服务
测试
一直是server2 类似于ip哈希算法

c、日志设置

[root@server1 haproxy]# vim /etc/rsyslog.conf 
###...
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none;local2.none                /var/log/messages

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

local2.*                /var/log/haproxy.log
###...
		##测试
[root@server1 haproxy]# systemctl restart rsyslog.service 
[root@server1 haproxy]# cat /var/log/haproxy.log 
Sep 25 17:07:50 localhost haproxy[4833]: Proxy main started.
Sep 25 17:07:50 localhost haproxy[4833]: Proxy app started.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

d、网页管理账户认证

在这里插入图片描述重启 测试
在这里插入图片描述

e、关键字(.****结尾的)给你专用的接口

在这里插入图片描述
在这里插入图片描述重启
在server3上

[root@server3 ~]# cd /var/www/html/
[root@server3 html]# mkdir images
[root@server3 html]# cd images/
[root@server3 images]# ls				#没有就去下载一个
vim.jpg

在这里插入图片描述
在这里插入图片描述

f、黑白名单及其重定向

在这里插入图片描述重启 测试

在这里插入图片描述

g、读写分离

在这里插入图片描述

在server2和server3上都要下载php 网页上的写是上传过程,是动态的。需要用到php

[root@server3 html]# cd /var/www/html/
[root@server3 html]# ls
images  index.html  index.php  upload  upload_file.php	##在/pub/docs/haproxy   直接mirror upload   在把里面的东西mv到上一级		###懂得都懂,没有的去下载一个php上传文件.php的
[root@server3 html]# chmod 777 upload
[root@server3 html]# vim upload_file.php
###。。。
<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 2000000))				###多加2个0
###。。。

server2同上 然后都要重新启动httpd服务

在浏览器上访问http://172.25.111.1/index.php
在这里插入图片描述

在这里插入图片描述测试结果
server3上有 server2上没有

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-27 14:29:21  更:2021-09-27 14:31:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:53:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码