Linux运维周作业八(8.5-8.11)

1. 总结日志分类, 优先级别。图文并茂解释应用如何将日志发到rsyslog,并写到目标。

  • 日志分类
#内置分类
auth, authpriv, cron, daemon,ftp,kern, lpr, mail, news, security(auth), 
user(default), uucp, syslog
#自定义的分类
local0-local7
  • Priority 优先级别,从低到高排序
debug,info, notice, warn(warning), err(error), crit(critical), alert, 
emerg(panic)
  • 图文并茂解释应用如何将日志发到rsyslog,并写到目标
#进配置文件
[root@ubuntu200 ~J$vim /etc/rsyslog.d/50-default.conf 

修改info以上级别日志存放到/var/log/syslog中

image.png
#重启日志服务
[root@ubuntu200 ~J$systemctl restart rsyslog.service 
#查看日志
[root@ubuntu200 ~J$tail /var/log/syslog
image.png

2.完成功能,sshd应用将日志写到rsyslog的local6分类,过滤所有级别,写入到/var/log/ssh.log。

#更改ssh的log日志定制单独存到sshd.log里

#进sshd的配置文件添加日志写到local6
[root@ubuntu200 ~J$vim /etc/ssh/sshd_config
SyslogFacility LOCAL6

#进默认配置文件,将local6.* 写入/var/log/ssh.log中
[root@ubuntu200 ~J$vim /etc/rsyslog.d/50-default.conf 
local6.*     /var/log/ssh.log

#重启sshd和rsyslog服务
[root@ubuntu200 ~J$systemctl restart sshd rsyslog
#查看日志
[root@ubuntu200 ~J$tail -f /var/log/ssh.log 
image.png

3. 完成功能,将3个主机(要求主机名为ip)的ssh日志,通过rsyslog服务将ssh日志写入到集中的主机上的rsyslog服务,写入到/var/log/all-ssh.log文件

#修改服务器日志配置文件,打开udp514端口
[root@ubuntu200 ~J$vim /etc/rsyslog.conf 
module(load="imudp")
input(type="imudp" port="514")
[root@ubuntu200 htmlJ$vim /etc/rsyslog.d/50-default.conf 
local6.*        /var/log/all-ssh.log

#重启日志服务使其生效
[root@ubuntu200 ~J$systemctl restart rsyslog.service 

#查看端口,确认udp514已开启
[root@ubuntu200 ~J$ss -ntlu
image.png
#客户端10.0.0.8安装日志服务
[root@rocky8 ~]# yum -y install rsyslog

#客户端10.0.0.8修改配置文件
[root@rocky8 ~]# vim /etc/ssh/sshd_config 
SyslogFacility LOCAL6
[root@rocky8 ~]# vim /etc/rsyslog.conf 
*.info                                                  @10.0.0.200

#客户端10.0.0.200重启ssh和rsyslog服务
[root@rocky8 ~]# systemctl restart rsyslog.service sshd
#其他两台客户端配置同上

#查看日志
[root@ubuntu200 htmlJ$tail -f /var/log/all-ssh.log 
image.png

4. 总结/var/log/目录下常用日志文件作用。

  • /var/log/secure,/var/log/auth.log:系统安全日志,文本格式,应周期性分析
  • /var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行查看
  • /var/log/wtmp:当前系统上,用户正常登录系统的相关日志信息,二进制格式,last命令可以查看
  • /var/log/lastlog:每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看
  • /var/log/dmesg:CentOS7 之前版本系统引导过程中的日志信息,文本格式,开机后的硬件变化将不再记 录,也可以通过专用命令dmesg查看,可持续记录硬件变化的情况
  • /var/log/boot.log 系统服务启动的相关信息,文本格式,Ubuntu无此文件 /var/log/messages(红帽系统),/var/log/syslog (Ubuntu) :系统中大部分的信息
  • /var/log/anaconda : anaconda的日志,Ubuntu无此文件

5. 总结journalctl命令的选项及示例

选项说明:
--no-full, --full, -l
   如果字段内容超长则以省略号(...)截断以适应列宽。
   默认显示完整的字段内容(超长的部分换行显示或者被分页工具截断)。
   老旧的 -l/--full 选项 仅用于撤销已有的 --no-full 选项,除此之外没有其他用处。
-a, --all
   完整显示所有字段内容, 即使其中包含不可打印字符或者字段内容超长。
-f, --follow
   只显示最新的日志项,并且不断显示新生成的日志项。 此选项隐含了 -n 选项。
-e, --pager-end
   在分页工具内立即跳转到日志的尾部。 此选项隐含了 -n1000
   以确保分页工具不必缓存太多的日志行。 不过这个隐含的行数可以被明确设置的 -n
   选项覆盖。 注意,此选项仅可用于 less(1) 分页器。
-n, --lines=
   限制显示最新的日志行数。 --pager-end 与 --follow 隐含了此选项。
   此选项的参数:若为正整数则表示最大行数; 若为 "all" 则表示不限制行数;
   若不设参数则表示默认值10行。
--no-tail
   显示所有日志行, 也就是用于撤销已有的 --lines= 选项(即使与 -f 连用)。
-r, --reverse
   反转日志行的输出顺序, 也就是最先显示最新的日志。
-o, --output=
   控制日志的输出格式。 可以使用如下选项:
   short
       这是默认值, 其输出格式与传统的 syslog[1] 文件的格式相似, 每条日志一行。
   short-iso
       与 short 类似,只是将时间戳字段以 ISO 8601 格式显示。
   short-precise
       与 short 类似,只是将时间戳字段的秒数精确到微秒级别。
   short-monotonic
       与 short 类似,只是将时间戳字段的零值从内核启动时开始计算。
   short-unix
       与 short 类似,只是将时间戳字段显示为从"UNIX时间原点"(1970-1-1 00:00:00
       UTC)以来的秒数。 精确到微秒级别。
   verbose
       以结构化的格式显示每条日志的所有字段。
    export
       将日志序列化为二进制字节流(大部分依然是文本) 以适用于备份与网络传输(详见
       Journal Export Format[2] 文档)。
   json
       将日志项按照JSON数据结构格式化, 每条日志一行(详见 Journal JSON Format[3]
       文档)。
   json-pretty
       将日志项按照JSON数据结构格式化, 但是每个字段一行, 以便于人类阅读。
   json-sse
       将日志项按照JSON数据结构格式化,每条日志一行,但是用大括号包围, 以适应
       Server-Sent Events[4] 的要求。
cat
       仅显示日志的实际内容, 而不显示与此日志相关的任何元数据(包括时间戳)。
--utc
   以世界统一时间(UTC)表示时间
--no-hostname
   不显示来源于本机的日志消息的主机名字段。 此选项仅对 short
   系列输出格式(见上文)有效。
-x, --catalog
   在日志的输出中增加一些解释性的短文本, 以帮助进一步说明日志的含义、
   问题的解决方案、支持论坛、 开发文档、以及其他任何内容。
   并非所有日志都有这些额外的帮助文本, 详见 Message Catalog Developer
   Documentation[5] 文档。
   注意,如果要将日志输出用于bug报告, 请不要使用此选项。
-q, --quiet
   当以普通用户身份运行时, 不显示任何警告信息与提示信息。 例如:"-- Logs begin at
   ...", "-- Reboot --"
-m, --merge
   混合显示包括远程日志在内的所有可见日志。
-b [ID][±offset], --boot=[ID][±offset]
   显示特定于某次启动的日志, 这相当于添加了一个 "_BOOT_ID=" 匹配条件。
   如果参数为空(也就是 ID 与 ±offset 都未指定), 则表示仅显示本次启动的日志。
   如果省略了 ID , 那么当 ±offset 是正数的时候, 将从日志头开始正向查找,
   否则(也就是为负数或零)将从日志尾开始反响查找。 举例来说, "-b
    1"表示按时间顺序排列最早的那次启动, "-b 2"则表示在时间上第二早的那次启动; "-b
    -0"表示最后一次启动, "-b -1"表示在时间上第二近的那次启动, 以此类推。 如果
   ±offset 也省略了, 那么相当于"-b -0", 除非本次启动不是最后一次启动(例如用
    --directory 指定了另外一台主机上的日志目录)。
   如果指定了32字符的 ID , 那么表示以此 ID 所代表的那次启动为基准
   计算偏移量(±offset), 计算方法同上。 换句话说, 省略 ID 表示以本次启动为基准
   计算偏移量(±offset)。
--list-boots
   列出每次启动的 序号(也就是相对于本次启动的偏移量)、32字符的ID、
   第一条日志的时间戳、最后一条日志的时间戳。
-k, --dmesg
   仅显示内核日志。隐含了 -b 选项以及 "_TRANSPORT=kernel" 匹配项。
-t, --identifier=SYSLOG_IDENTIFIER
   仅显示 syslog[1] 识别符为 SYSLOG_IDENTIFIER 的日志项。
   可以多次使用该选项以指定多个识别符。
-u, --unit=UNIT|PATTERN
   仅显示属于特定单元的日志。 也就是单元名称正好等于 UNIT 或者符合 PATTERN
   模式的单元。 这相当于添加了一个 "_SYSTEMD_UNIT=UNIT" 匹配项(对于 UNIT 来说),
   或一组匹配项(对于 PATTERN 来说)。
可以多次使用此选项以添加多个并列的匹配条件(相当于用"OR"逻辑连接)。
--user-unit=
   仅显示属于特定用户会话单元的日志。 相当于同时添加了 "_SYSTEMD_USER_UNIT=" 与
    "_UID=" 两个匹配条件。
   可以多次使用此选项以添加多个并列的匹配条件(相当于用"OR"逻辑连接)。
-p, --priority=
   根据日志等级(包括等级范围)过滤输出结果。 日志等级数字与其名称之间的对应关系如下
   (参见 syslog(3)): "emerg" (0), "alert" (1), "crit" (2), "err" (3),
    "warning" (4), "notice" (5), "info" (6), "debug" (7) 。
   若设为一个单独的数字或日志等级名称, 则表示仅显示小于或等于此等级的日志
   (也就是重要程度等于或高于此等级的日志)。 若使用 FROM..TO.. 设置一个范围,
   则表示仅显示指定的等级范围内(含两端)的日志。 此选项相当于添加了 "PRIORITY="
   匹配条件。
-c, --cursor=
   从指定的游标(cursor)开始显示日志。
   [提示]每条日志都有一个"__CURSOR"字段,类似于该条日志的指纹。
--after-cursor=
   从指定的游标(cursor)之后开始显示日志。 如果使用了 --show-cursor 选项,
   则也会显示游标本身。
--show-cursor
   在最后一条日志之后显示游标, 类似下面这样,以"--"开头:
        -- cursor: s=0639...
   游标的具体格式是私有的(也就是没有公开的规范), 并且会变化。
-S, --since=, -U, --until=
   显示晚于指定时间(--since=)的日志、显示早于指定时间(--until=)的日志。
   参数的格式类似 "2012-10-30 18:17:16" 这样。 如果省略了"时:分:秒"部分,
   则相当于设为 "00:00:00" 。 如果仅省略了"秒"的部分则相当于设为 ":00" 。
   如果省略了"年-月-日"部分, 则相当于设为当前日期。 除了"年-月-日 时:分:秒"格式,
   参数还可以进行如下设置: (1)设为 "yesterday", "today", "tomorrow"
   以表示那一天的零点(00:00:00)。 (2)设为 "now" 以表示当前时间。
   (3)可以在"年-月-日 时:分:秒"前加上 "-"(前移) 或 "+"(后移)
   前缀以表示相对于当前时间的偏移。 关于时间与日期的详细规范, 参见
   systemd.time(7)
-F, --field=
   显示所有日志中某个字段的所有可能值。 [译者注]类似于SQL语句:"SELECT DISTINCT
   某字段 FROM 全部日志"
-N, --fields
   输出所有日志字段的名称
--system, --user
   仅显示系统服务与内核的日志(--system)、 仅显示当前用户的日志(--user)。
   如果两个选项都未指定,则显示当前用户的所有可见日志。
-M, --machine=
   显示来自于正在运行的、特定名称的本地容器的日志。 参数必须是一个本地容器的名称。
-D DIR, --directory=DIR
   仅显示来自于特定目录中的日志, 而不是默认的运行时和系统日志目录中的日志。
--file=GLOB
   GLOB 是一个可以包含"?"与"*"的文件路径匹配模式。 表示仅显示来自与指定的 GLOB
   模式匹配的文件中的日志, 而不是默认的运行时和系统日志目录中的日志。
   可以多次使用此选项以指定多个匹配模式(多个模式之间用"OR"逻辑连接)。
--root=ROOT
   在对日志进行操作时, 将 ROOT 视为系统的根目录。 例如 --update-catalog 将会创建
   ROOT/var/lib/systemd/catalog/database
--new-id128
   此选项并不用于显示日志内容, 而是用于重新生成一个标识日志分类的 128-bit ID 。
   此选项的目的在于 帮助开发者生成易于辨别的日志消息, 以方便调试。
--header
   此选项并不用于显示日志内容, 而是用于显示日志文件内部的头信息(类似于元数据)。
--disk-usage
   此选项并不用于显示日志内容,
   而是用于显示所有日志文件(归档文件与活动文件)的磁盘占用总量。
--vacuum-size=, --vacuum-time=, --vacuum-files=
   这些选项并不用于显示日志内容,
   而是用于清理日志归档文件(并不清理活动的日志文件), 以释放磁盘空间。
    --vacuum-size= 可用于限制归档文件的最大磁盘使用量 (可以使用 "K", "M", "G", "T"
   后缀); --vacuum-time= 可用于清除指定时间之前的归档 (可以使用 "s", "m", "h",
    "days", "weeks", "months", "years" 后缀); --vacuum-files=
   可用于限制日志归档文件的最大数量。 注意,--vacuum-size= 对 --disk-usage
   的输出仅有间接效果, 因为 --disk-usage 输出的是归档日志与活动日志的总量。
   同样,--vacuum-files= 也未必一定会减少日志文件的总数,
   因为它同样仅作用于归档文件而不会删除活动的日志文件。
   此三个选项可以同时使用,以同时从三个维度去限制归档文件。
   若将某选项设为零,则表示取消此选项的限制。
--list-catalog [128-bit-ID...]
   简要列出日志分类信息, 其中包括对分类信息的简要描述。
   如果明确指定了分类ID(128-bit-ID), 那么仅显示指定的分类。
--dump-catalog [128-bit-ID...]
   详细列出日志分类信息 (格式与 .catalog 文件相同)。
   如果明确指定了分类ID(128-bit-ID), 那么仅显示指定的分类。
--update-catalog
   更新日志分类索引二进制文件。
   每当安装、删除、更新了分类文件,都需要执行一次此动作。
--setup-keys
   此选项并不用于显示日志内容, 而是用于生成一个新的FSS(Forward Secure
   Sealing)密钥对。 此密钥对包含一个"sealing key"与一个"verification key"。
    "sealing key"保存在本地日志目录中, 而"verification key"则必须保存在其他地方。
   详见 journald.conf(5) 中的 Seal= 选项。
--force
   与 --setup-keys 连用, 表示即使已经配置了FSS(Forward Secure Sealing)密钥对,
   也要强制重新生成。
--interval=
   与 --setup-keys 连用,指定"sealing key"的变化间隔。
   较短的时间间隔会导致占用更多的CPU资源, 但是能够减少未检测的日志变化时间。
   默认值是 15min
--verify
   检查日志文件的内在一致性。 如果日志文件在生成时开启了FSS特性, 并且使用
    --verify-key= 指定了FSS的"verification key",
   那么,同时还将验证日志文件的真实性。
--verify-key=
   与 --verify 选项连用, 指定FSS的"verification key"
--sync
   要求日志守护进程将所有未写入磁盘的日志数据刷写到磁盘上,
   并且一直阻塞到刷写操作实际完成之后才返回。 因此该命令可以保证当它返回的时候,
   所有在调用此命令的时间点之前的日志, 已经全部安全的刷写到了磁盘中。
--flush
   要求日志守护进程 将 /run/log/journal 中的日志数据 刷写到 /var/log/journal 中
   (如果持久存储设备当前可用的话)。 此操作会一直阻塞到操作完成之后才会返回,
   因此可以确保在该命令返回时, 数据转移确实已经完成。
   注意,此命令仅执行一个单独的、一次性的转移动作, 若没有数据需要转移,
   则此命令什么也不做, 并且也会返回一个表示操作已正确完成的返回值。
--rotate
   要求日志守护进程滚动日志文件。 此命令会一直阻塞到滚动完成之后才会返回。
-h, --help
   显示简短的帮助信息并退出。
--version
   显示简短的版本信息并退出。
--no-pager
   不将程序的输出内容管道(pipe)给分页程序
范例:
#显示尾部的最新10行日志
journalctl -n
#显示尾部指定行数的日志
journalctl -n 20
#实时滚动显示最新日志
journalctl -f
#查看指定服务的日志
journalctl /usr/lib/systemd/systemd
#查看指定进程的日志
journalctl _PID=1
#查看某个路径的脚本的日志
journalctl /usr/bin/bash
#查看指定用户的日志
journalctl _UTO=33 --since today
#查看某个Unit的日志
journalctl -u nginx.service

6. 完成将多个主机(要求主机名为ip)的nginx日志集中写入到mysql表中

#安装数据库MySQL
root@ubuntu202:~# apt update && apt install -y mysql-server
#更改远程服务器IP
root@ubuntu202:~# vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address            = 0.0.0.0
mysqlx-bind-address     = 0.0.0.0
root@ubuntu202:~# systemctl restart mysql
root@ubuntu202:~# ss -ntl
State        Recv-Q       Send-Q               Local Address:Port                Peer Address:Port       Process       
LISTEN       0            70                         0.0.0.0:33060                    0.0.0.0:*                        
LISTEN       0            151                        0.0.0.0:3306 
#日志服务器200上安装包
root@ubuntu:~# apt update && apt install -y rsyslog-mysql
root@ubuntu:~# cat /etc/rsyslog.d/mysql.conf 
module (load="ommysql")
*.* action(type="ommysql" server="localhost" db="Syslog" uid="rsyslog" pwd="")
root@ubuntu:~# dpkg -L rsyslog-mysql 

root@ubuntu:~# file /usr/share/dbconfig-common/data/rsyslog-mysql/install/mysql
/usr/share/dbconfig-common/data/rsyslog-mysql/install/mysql: ASCII text

#查看此文件,是创建表结构的文件
root@ubuntu:~# less /usr/share/dbconfig-common/data/rsyslog-mysql/install/mysql

#数据库服务器202上创建数据库,账号密码,授权
mysql> create database Syslog;
mysql> create user rsyslog@'10.0.0.%' identified by '123456';
mysql> grant all on Syslog.* to rsyslog@'10.0.0.%';

#日志服务器200上更改配置
root@ubuntu:~# vim  /etc/rsyslog.d/mysql.conf
module (load="ommysql")
*.info action(type="ommysql" server="10.0.0.202" db="Syslog" uid="rsyslog" pwd="123456")

#日志服务器上远程导入数据库表结构
root@ubuntu:~# mysql -ursyslog -p123456 -h10.0.0.202 Syslog < /usr/share/dbconfig-common/data/rsyslog-mysql/install/mysql 
root@ubuntu:~# systemctl restart rsyslog.service 
此时日志服务器10.0.0.200已经可以吧日志自动写入10.0.0.202数据库Syslog表中了

#更改10.0.0.200日志服务器配置,接受10.0.0.8的日志数据
root@ubuntu:~# vim /etc/rsyslog.conf
module(load="imudp")
input(type="imudp" port="514")
root@ubuntu:~# systemctl restart rsyslog.service 

#10.0.0.8配置日志服务器指到10.0.0.200(此处@10.0.0.200指的是udp514,@@10.0.0.200指的是tcp514)
[root@rocky8 ~]# vim /etc/rsyslog.conf 
*.info                                                  @10.0.0.200
[root@rocky8 ~]# systemctl restart rsyslog.service 

#查看数据库已经有日志传过来了
mysql> select * from SystemEvents\G;

#多台写入同上
image.png

7. 尝试使用logrotate服务切割nginx日志,每天切割一次,要求大于不超过3M, 保存90天的日志, 旧日志以时间为后缀,要求压缩。

#在/var/log/nginx中写入一个4M的文件
[root@ubuntu200 ~J$dd if=/dev/zero of=/var/log/nginx.log bs=4M count=1

[root@ubuntu200 ~J$vim /etc/logrotate.d/nginx
/var/log/nginx.log {
su root list       #由于不添加此项会报权限错误
daily       #每天转储

rotate 90        #转储的次数

size 3M         #每个文件大小为3M

dateext        #旧文件带日期

missingok       #日志不存在,不提示错误,继续处理下一个

notifempty       #空文件不转储

compress      #压缩

delaycompress       #延时压缩

 create 666 nginx nginx        #转储旧文件以后,创建新的文件并更改对应的属性
 postrotate

 if [ -f /apps/nginx/logs/nginx.pid ]; then                        #针对nginx特有的设置
 kill -USR1 `cat /apps/nginx/logs/nginx.pid`
 fi

 endscript

}

#日志切割
[root@ubuntu200 ~J$logrotate /etc/logrotate.d/nginx 
#查看
[root@ubuntu200 ~J$ll /var/log/nginx.log*
image.png

8.总结 LVS的NAT和DR模型工作原理,并完成DR模型实战。

  • LVS的NAT模型工作原理

lvs-nat:本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和
PORT实现转发
(1)RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP
(2)请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
(3)支持端口映射,可修改请求报文的目标PORT
(4)VS必须是Linux系统,RS可以是任意OS系统
LVS是请求报文的入口,也是响应报文的出口
image.png
  • LVS的DR模型工作原理

解决LVS-nat性能瓶颈问题,可以直接返回,相应报文不经过LVS
RIP上配置不回应ARP报文(ignore),默默拥有VIP,还有不向外主动发布(annance)
DR模型缺点无法更改端口,工作在数据链路层,LVS和RS必须在同网段
DR模式特点:
1. Director和各RS都配置有VIP
2. 确保前端路由器将目标IP为VIP的请求报文发往Director
- 在前端网关做静态绑定VIP和Director的MAC地址
- 在RS上使用arptables工具
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
- 在RS上修改内核参数以限制arp通告及应答级别
不主动不负责不拒绝--M49
/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce
3.RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Dirextor
4.RS和Director要在同一个物理网络
5.请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client
6.不支持端口映射
7.无须开启ip_forward
8.RS可使用大多数OS系统
image.png
  • DR模型实战案例

image.png
#路由器10.0.0.7开启ip_forward
[root@centos7 ~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
[root@centos7 ~]# sysctl -p

#更改内核参数(永久保存写入/etc/sysctl.conf,路径中/换成.):
root@ubuntu201:~# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
root@ubuntu201:~# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
root@ubuntu201:~# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
root@ubuntu201:~# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

root@ubuntu202:~# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
root@ubuntu202:~# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
root@ubuntu202:~# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
root@ubuntu202:~# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

#配置web的回环网卡地址
root@ubuntu201:~# ip a a 10.0.0.10/32 dev lo label lo:1
root@ubuntu202:~# ip a a 10.0.0.10/32 dev lo label lo:1

#LVS服务器
root@ubuntu:~# ip a a 10.0.0.10/32 dev lo label lo:1
root@ubuntu:~# ipvsadm -A -t 10.0.0.10:80 -s rr
root@ubuntu:~# ipvsadm -a -t 10.0.0.10:80 -r 10.0.0.201:80 -g
root@ubuntu:~# ipvsadm -a -t 10.0.0.10:80 -r 10.0.0.202:80 -g
#关闭ip_forward,因为DR模型不需要开启ip_forward,临时改内存
root@ubuntu:~# sysctl -w net.ipv4.ip_forward=0   
net.ipv4.ip_forward = 0

#客户端测试
[root@rocky8 ~]# curl 10.0.0.10
10.0.0.202 
[root@rocky8 ~]# curl 10.0.0.10
10.0.0.201 
[root@rocky8 ~]# curl 10.0.0.10
10.0.0.202 
[root@rocky8 ~]# curl 10.0.0.10
10.0.0.201 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容