RH358服务管理和自动化–控制网络服务
接下来先讨论和回顾管理网络所需要的工具和技能。属于第一章第一节内容。
开篇回顾:https://blog.csdn.net/qq_41765918/article/details/121875149
文章目录
1. Red Hat服务管理和自动化简介
在RH358,主要学习如何安装、配置和管理Red Hat Enterprise Linux提供的核心服务和功能。而且每个章节都是先讲解服务的手动使用,而在章节的最后介绍如何使用Ansible来自动化完成此前的手动操作。
要成为一名拥有高效率的系统管理员,应该非常熟悉地了解所管理的每个服务。当在大型数据中心中大规模部署和管理服务时,还必须了解如何自动化地所操作的任务,以便能够在大量系统上重复地自动部署和管理服务。
然后本章节是回顾 RHEL 系统上关于systemd和用于控制系统服务的相关工具。至于在下个章节中,将回顾如何使用NetworkManager配置网络接口,以及如何使用nmcli等工具来处理系统的网络配置。最后,将回顾如何使用Ansible自动化的服务配置和网络接口配置任务。
2. 介绍Systemd
系统启动和进程由systemd系统和服务管理器管理。这个程序提供了一种方法,可以在启动时和运行中的系统上激活系统资源、服务器守护进程和其他进程。
守护进程是由系统启动而不是从shell提示符启动的系统进程。它们没有连接到控制终端,也不能被带到前台。守护进程通常执行各种系统任务或提供其他程序和客户端使用的服务。
通常,Red Hat Enterprise Linux系统的进程ID 1为systemd。该进程负责在引导过程中激活系统上的其他守护进程,并在系统停止或重新引导时关闭它们。
一个systemd服务通常管理一个或多个守护进程,这些守护进程共同提供某些功能。但是,有时启动或停止服务会对系统状态进行一次性更改(例如,配置网络接口),这并不需要在之后让守护进程继续运行。
Systemctl和Systemd Units
systemctl命令用于管理不同类型的systemd对象,称为单元。可以使用systemctl -t帮助显示可用单元类型的列表。
一些常见的单元类型包括:
-
服务单元,具有服务扩展并代表系统服务。这种类型的单元管理频繁访问的守护进程,比如web服务器。当一个服务单元启动一个守护进程时,它通常会一直运行到systemd停止为止。
-
套接字单元,它有套接字扩展,表示进程间通信(IPC)套接字。当建立客户端连接时,套接字的控制权从systemd传递给新启动的守护进程。套接字单元在启动时延迟服务的启动,并按需启动不常用的服务。当客户端断开连接时,套接字单元可能会停止关联的服务单元。
重要:在RH358课程中,术语:服务,指的是为网络客户端提供某些服务的守护进程,无论是通过服务单元启动,还是通过套接字单元启动,或通过其他方式启动。
服务状态
可以使用systemctl status name.type查看服务的状态。如果没有提供单元类型,则systemctl显示服务(service)单元的状态(如果存在服务单元)
[root@servera ~]# systemctl status sshd.service
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2021-12-11 23:25:54 CST; 37s ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1387 (sshd)
CGroup: /system.slice/sshd.service
└─1387 /usr/sbin/sshd -D
Dec 11 23:25:54 servera systemd[1]: Starting OpenSSH server daemon...
Dec 11 23:25:54 servera sshd[1387]: Server listening on 0.0.0.0 port 22.
Dec 11 23:25:54 servera systemd[1]: Started OpenSSH server daemon.
Dec 11 23:25:54 servera sshd[1387]: Server listening on :: port 22.
Dec 11 23:26:18 servera sshd[1651]: Accepted password for root from 192.168.159.1 port 63293 ssh2
在状态输出中可以找到几个表示服务状态的关键字:
关键字 | 描述 |
---|---|
loaded | 单元配置文件已被处理。 |
active (running) | 使用一个或多个持续进程运行。 |
active (exited) | 成功完成一次性配置。 |
active (waiting) | 运行,但等待一个事件。 |
inactive | 不运行。 |
enabled | 将在启动时启动。 |
disabled | 将不会在启动时启动。 |
static | 不能启用,但可以由已启用的单元自动启动。 |
3. 使用Systemctl列出单元文件
# 查询所有单元状态,验证系统是否启动。
[root@host ~]# systemctl
# 仅查询服务单元状态。
[root@host ~]# systemctl --type=service
# 调查任何处于故障或维护状态的单元。可选地,添加-l选项来显示完整的输出。
[root@host ~]# systemctl status NetworkManager-wait-online -l
# is-active或is-enabled参数也可以用来确定一个特定的单元是否激活,并显示该单元是否在启动时启用。其他命令也可以显示激活和启用状态:
[root@host ~]# systemctl is-active sshd
active
[root@host ~]# systemctl is-enabled sshd
enabled
# 列出所有加载单元的活动状态。可选地,限制单元的类型。--all选项会添加不活动的单位。
[root@host ~]# systemctl list-units --type=service
UNIT LOAD ACTIVE SUB DESCRIPTION
accounts-daemon.service loaded active running Accounts Service
atd.service loaded active running Job spooling tools
auditd.service loaded active running Security Auditing Service
avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack
...output omitted...
[root@host ~]# systemctl list-units --type=service --all
# 查看所有单位的启用和禁用设置。可选地,限制单元的类型。
[root@host ~]# systemctl list-unit-files --type=service
# 只查看失败的服务。
[root@host ~]# systemctl --failed --type=service
4. 查看服务状态
# 使用systemctl status命令查看sshd服务状态。请注意PID,它将在下一个示例中使用:
# 查看sshd服务状态
[root@workstation ~]# systemctl status sshd.service
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-05-30 10:43:27 CST; 1h 4min ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1093 (sshd)
Tasks: 1 (limit: 11231)
Memory: 5.4M
CGroup: /system.slice/sshd.service
└─1093 /usr/sbin/sshd -D -oCiphers=aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256->
# 确认进程正在运行。
[root@workstation ~]# ps -up 1093
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1093 0.0 0.4 92308 7500 ? Ss 10:43 0:00 /usr/sbin/sshd -D -oCiphers=aes256-gcm@openssh.com,ch
# 停止服务并验证状态。
[root@host ~]# systemctl stop sshd.service
[root@host ~]# systemctl status sshd.service
# 启动服务并查看状态。进程ID已更改。
[root@host ~]# systemctl start sshd.service
[root@host ~]# systemctl status sshd.service
# 在单个命令中停止,然后启动服务。
[root@host ~]# systemctl restart sshd.service
[root@host ~]# systemctl status sshd.service
# 发出指令,让服务读取并重新加载其配置文件,而不需要完全停止和启动。请注意,如果没有完全停止和启动,进程ID不会发生更改
[root@host ~]# systemctl reload sshd.service
[root@host ~]# systemctl status sshd.service
5. 单元的依赖关系
服务可以作为其他服务的依赖项启动。如果启用了套接字单元,而没有启用同名的服务单元,则在网络套接字上发出请求时,服务将自动启动。当满足某个文件系统条件时,也可以通过路径单元触发业务。
systemctl list-dependencies UNIT命令可以用来显示其他单元的树,这些单元必须与特定的单元一起启动。这个命令的–reverse选项显示了需要启动哪些单元才能运行。
6. 屏蔽服务
系统可能为某个功能安装了相互冲突的服务,比如防火墙(iptables和firewalld)。为了避免意外启动服务,您可以屏蔽该服务。Masking在配置目录中创建一个链接,这样如果服务启动了,什么也不会发生。
[root@host ~]# systemctl mask iptables
Created symlink /etc/systemd/system/iptables.service → /dev/null.
[root@host ~]# systemctl unmask iptables
Removed /etc/systemd/system/iptables.service.
重要:被禁用的服务不会在启动时自动启动或由其他单元文件启动,但可以手动启动。不过不能自动启动屏蔽服务。
7. 使系统守护进程启动时启动或停止
# 当在适当的systemd配置目录中创建链接时,服务将在启动时启动。这些链接是用systemctl命令创建和删除的。
# 查看服务状态
[root@host ~]# systemctl status sshd.service
# 关闭服务并验证状态。注意,禁用服务并不会停止该服务。
[root@host ~]# systemctl disable sshd.service
[root@host ~]# systemctl status sshd.service
# 启用服务并验证状态。
[root@host ~]# systemctl enable sshd.service
[root@host ~]# systemctl is-enabled sshd.service
8. Systemctl命令汇总
服务可以在运行中的系统上启动和停止,也可以在启动时自动启动或禁用。下面显示了一些常用的命令。如要获取更多命令,请运行systemctl --help。
# systemctl is-enabled xxx.service # 查询服务是否开机启动
# systemctl enable xxx.service # 开机运行服务
# systemctl disable xxx.service # 取消开机运行
# systemctl start xxx.service # 启动服务
# systemctl stop xxx.service # 停止服务
# systemctl restart xxx.service # 重启服务
# systemctl reload xxx.service # 重新加载服务配置文件
# systemctl status xxx.service # 查询服务运行状态
# systemctl mask xxx.service # 屏蔽服务
# systemctl umask xxx.service # 取消屏蔽服务
# systemctl --failed # 显示启动失败的服务
# systemctl list-dependencies xxx.service # 列出指定单元所需要的单元(依赖)。
9. 课本练习
# 配套环境会准备好相关初始化脚本让我们进行练习(如若有配套环境,一定要好好运用)。
[student@workstation ~]$ lab servicemgmt-netservice start
# 重启服务查看进程ID
[student@workstation ~]$ sudo systemctl status chronyd
[student@workstation ~]$ sudo systemctl restart chronyd
[student@workstation ~]$ sudo systemctl status chronyd
# 查看服务状态并启动服务、设置开机自启
[student@workstation ~]$ ssh servera
[student@servera ~]$ sudo -i
[sudo] password for student: student
[root@servera ~]# systemctl status chronyd
[root@servera ~]# systemctl start chronyd
[root@servera ~]# systemctl status chronyd
[root@servera ~]# systemctl is-enabled chronyd
enabled
[root@servera ~]# reboot
# 屏蔽服务
[root@servera ~]# systemctl status chronyd
[root@servera ~]# systemctl disable chronyd
[root@servera ~]# systemctl status chronyd
[root@servera ~]# reboot
[root@servera ~]# systemctl status chronyd
# 完成实验
[student@workstation ~]$ lab servicemgmt-netservice finish
总结
- 介绍了systemd基础与常用服务状态。
- 运用常用选项查看相关内容。
- 若喜欢金鱼哥的文章,顺手点个赞。也可点个关注,因为后续会不断上干货。