一、 基础服务篇:DNS 与 Web 的基石
在云原生时代,虽然很多基础服务被托管了,但理解 BIND 和 Apache 的配置,依然是排查网络问题的“基本功”。
1. BIND:掌控域名解析的核心
DNS 配置最怕的是语法错误。请严格按照以下步骤操作:
安装与启动
#安装 BIND 及工具包 dnf install -y bind bind-utils # 启动并设置开机自启 systemctl enable --now named # 防火墙放行 firewall-cmd --add-service=dns --permanent firewall-cmd --reload
注意:listen-on 和 allow-query 的 IP 地址请根据你的实际网段修改。
options { listen-on port 53 { 10.0.0.3; }; #本机IP directory "/var/named"; allow-query { 10.0.0.0/24; }; # 允许查询的网段 recursion yes; # 开启递归查询}; # 包含反向解析配置文件 include "/etc/named.rfc1912.zones";
正向解析文件:/var/named/named.test.com
$TTL 1D @ IN SOA @ rname.invalid. ( 0 1D 1H 1W 3H ) NS ns.test.com. ns A 10.0.0.3 www A 10.0.0.3 #域名指向
验证命令
#检查配置文件语法 named-checkconf named-checkzone test.com /var/named/named.test.com # 测试解析 nslookup www.test.com 10.0.0.3
Apache:多虚拟主机配置
基于域名的虚拟主机是企业级应用的标配。
创建站点目录
mkdir -p /var/www/site{1,2}
echo '<h1>Welcome to Site1</h1>' > /var/www/site1/index.html
echo '<h1>Welcome to Site2</h1>' > /var/www/site2/index.html
配置文件:/etc/httpd/conf.d/vhosts.conf
<VirtualHost *:80> ServerName site1.test.com DocumentRoot /var/www/site1 ErrorLog /var/log/httpd/site1_error.log CustomLog /var/log/httpd/site1_access.log combined </VirtualHost> <VirtualHost *:80> ServerName site2.test.com DocumentRoot /var/www/site2 ErrorLog /var/log/httpd/site2_error.log CustomLog /var/log/httpd/site2_access.log combined </VirtualHost> #目录权限控制 <Directory "/var/www/site1"> Require all granted</Directory>
配置完成后执行systemctl restart httpd。
二、 数据库与容器化:MySQL 与 Docker
数据安全是底线,容器化是效率的起点。
1. MySQL 8.0 初始化与备份
MySQL 8.0 的密码策略和备份恢复是运维的高频操作。
初始化安全设置
#1. 查看临时密码 grep 'temporary password' /var/log/mysqld.log # 2. 登录并修改密码(注意:8.0默认密码策略较严) mysql -uroot -p ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPass!123'; FLUSH PRIVILEGES;
全量备份与增量恢复
全量备份是底线,Binlog 是救命稻草。
#全量备份(记得提前创建 /backup 目录) mysqldump -u root -p --all-databases > /backup/all_$(date +%F).sql # 增量备份(基于 Binlog) # 1. 确认 Binlog 开启 mysql -e "SHOW VARIABLES LIKE 'log_bin';" # 2. 刷新日志(产生新的 binlog 文件) mysql -e "FLUSH LOGS;" # 3. 解析 Binlog 进行恢复(例如恢复误删的数据) mysqlbinlog /var/lib/mysql/mysql-bin.000002 | mysql -u root -p
2. Docker 一键部署监控栈
利用 Docker Compose 快速搭建 LAMP/LNMP 环境。
docker-compose.yml核心配置
version: '3.8' services: nginx: image:nginx:latest ports: - "80:80" volumes: - ./conf.d:/etc/nginx/conf.d depends_on: - php-fpm php-fpm: image: php:7.4-fpm environment: - MYSQL_HOST=db db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: example
启动命令:docker-compose up -d
三、 进阶实战:K8s 集群搭建避坑指南
K8s 搭建最怕环境不一致。请严格按照以下环境准备步骤操作,否则kubeadm init必报错。1. 环境初始化(Master & Node 节点均需执行)
关闭防火墙与 Swap(K8s 强制要求)
#关闭防火墙(或配置复杂规则,初学者建议关闭) systemctl stop firewalld systemctl disable firewalld # 关闭 Swap(不关闭 Kubelet 会报错) swapoff -a sed -i '/ swap / s/^(.*)$/#\1/g' /etc/fstab # 关闭 SELinux setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
配置内核参数
cat <<EOF | tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF modprobe overlay modprobe br_netfilter cat <<EOF | tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF sysctl --system
2. 容器运行时:Containerd 配置
K8s 1.24+ 版本移除了 Docker-shim,推荐直接使用 Containerd。
安装 Containerd
#配置 yum 源(CentOS) yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y containerd.io # 生成默认配置 mkdir -p /etc/containerd containerd config default > /etc/containerd/config.toml # 修改配置文件:将 SystemdCgroup = false 改为 true(适配 K8s) sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml systemctl enable --now containerd
K8s 集群初始化
安装 Kubeadm/Kubelet
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF yum install -y kubelet-1.24.1 kubeadm-1.24.1 kubectl-1.24.1 systemctl enable --now kubelet
Master 节点初始化
注意:--image-repository 指定了阿里云镜像源,防止拉取不到官方镜像。
kubeadm init \ --apiserver-advertise-address=10.0.0.3 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.24.1 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16
安装网络插件(Calico)
#下载官方 YAML 并应用 wget https://docs.projectcalico.org/manifests/calico.yaml kubectl apply -f calico.yaml
四、 监控体系:Zabbix + Grafana
一个没有监控的系统是裸奔的。
1. Zabbix Agent 部署
配置文件:/etc/zabbix/zabbix_agentd.conf
Server=10.0.0.3 #Zabbix Server IP ServerActive=10.0.0.3 # 主动式上报地址 Hostname=my-agent # 必须与 Web 界面添加主机时的 "主机名称" 一致
2. Grafana 数据可视化
安装与插件
#安装 Grafana dnf install -y grafana # 安装 Zabbix 插件(关键步骤,否则无法直接读 Zabbix 数据) grafana-cli plugins install alexanderzobnin-zabbix-app systemctl enable --now grafana-server
访问http://服务器IP:3000,默认账号密码admin/admin。