RH358服务管理和自动化--控制网络服务

简介: RH358服务管理和自动化--控制网络服务

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基础与常用服务状态。运用常用选项查看相关内容。若喜欢金鱼哥的文章,顺手点个赞。也可点个关注,因为后续会不断上干货。

666

目录
相关文章
|
4月前
|
数据采集 机器学习/深度学习 人工智能
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
292 0
|
3月前
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
207 61
|
12天前
|
运维 负载均衡 监控
“手工改配置太累了!”——聊聊如何用自动化玩转网络流量管理
“手工改配置太累了!”——聊聊如何用自动化玩转网络流量管理
47 0
|
4月前
|
监控 安全 Linux
Arista CloudVision 2025.1 - 多云和数据中心网络自动化、监控和分析
Arista CloudVision 2025.1 - 多云和数据中心网络自动化、监控和分析
136 2
Arista CloudVision 2025.1 - 多云和数据中心网络自动化、监控和分析
|
Ubuntu 网络协议 Unix
02理解网络IO:实现服务与客户端通信
网络IO指客户端与服务端通过网络进行数据收发的过程,常见于微信、QQ等应用。本文详解如何用C语言实现一个支持多客户端连接的TCP服务端,涉及socket编程、线程处理及通信流程,并分析“一消息一线程”模式的优缺点。
154 0
|
4月前
|
网络协议 安全 Devops
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
114 4
|
3月前
|
测试技术 Python
Python接口自动化测试中Mock服务的实施。
总结一下,Mock服务在接口自动化测试中的应用,可以让我们拥有更高的灵活度。而Python的 `unittest.mock`库为我们提供强大的支持。只要我们正确使用Mock服务,那么在任何情况下,无论是接口是否可用,都可以进行准确有效的测试。这样,就大大提高了自动化测试的稳定性和可靠性。
118 0
|
5月前
|
人工智能 API 开发工具
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
GitHub MCP Server是基于Model Context Protocol的服务器工具,提供与GitHub API的无缝集成,支持自动化处理问题、Pull Request和仓库管理等功能。
1043 2
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
|
6月前
|
存储 人工智能 运维
超大规模云网络技术新突破!阿里云斩获中国自动化学会科技进步一等奖
超大规模云网络技术新突破!阿里云斩获中国自动化学会科技进步一等奖
256 60
|
5月前
|
机器学习/深度学习 人工智能 安全
从攻防演练到AI防护:网络安全服务厂商F5的全方位安全策略
从攻防演练到AI防护:网络安全服务厂商F5的全方位安全策略
115 8

热门文章

最新文章