https://github.com/unixhot/saltbook-codephp
1.Cobbler 1.15 统一网卡名 2.Zabbix 系统已经安装好了! base 1.手动实现 2.须要使用salt的什么状态模块 3.编写sls 1.系统初始化 1.1 关闭SELinux - file.managed - /etc/selinux/config 1.2 关闭默认iptables - service.disabled firewalld 1.3 时间同步(配置ntp) - pkg.installed cron 1.4 文件描述符(必备 /etc/security/limits.conf) file.managed 1.5 内核优化(必备 tcp 内存) sysctl 1.6 SSH服务优化(关闭DNS解析,修改端口) file.managed service 1.7 精简开机系统服务(只开启SSHD服务) service.disabled 1.8 DNS解析(必备) file.managed /etc/resolv.conf 1.9 历史记录优化histroy(记录时间,用户)file.managed /etc/profile 1.10 设置终端超时时间(安全考虑) file.managed /etc/profile 1.11 配置yum源(必备) file.managed 1.12 安装各类agent(必备) pkg file service jinja模板 1.13 基础用户(应用用户 user group),用户登陆提醒,sudo权限设置(必备) 1.14 经常使用基础命令,命令别名(必备 screen lrzsz tree openssl telnet iftop iotop sysstat wget ntpdate dos2unix lsof net-tools mtr zip vim nsloopup ) pkg.installed pkgs 1.15 用户登陆提示、PS1的修改 file.managed file.append 2.服务部署 抽象:功能模块 redis 安装、配置、启动 mysql 安装、配置(my.cnf能够统一 目录默认配置能够统一) master: server_id 1111 slave: server_id 2222 1.redis 主从 (已经实现) 2.mysql 主从 2.1 mysql-install.sls 安装 配置 初始化 2.2 my.cnf配置不一样-server id 2.3 建立主从同步用户 2.4 master上获取binlog 和 pos值 2.5 slave上,change master && start slave 2.6 检查主从状态 GRANT replication slave on 3.apache+php 4.haproxy+keepalived 3.监控 4.业务 5.其它
1.Cobbler 1.15 统一网卡名 2.Zabbix 系统已经安装好了! base步骤 1.手动实现 2.须要使用salt的什么状态模块 3.编写sls
1.1 关闭SELinux - file.managed - /etc/selinux/config 1.2 关闭默认iptables - service.disabled firewalld 1.3 时间同步(配置ntp) - pkg.installed cron 1.4 文件描述符(必备 /etc/security/limits.conf) file.managed 1.5 内核优化(必备 tcp 内存) sysctl 1.6 SSH服务优化(关闭DNS解析,修改端口) file.managed service 1.7 精简开机系统服务(只开启SSHD服务) service.disabled 1.8 DNS解析(必备) file.managed /etc/resolv.conf 1.9 历史记录优化histroy(记录时间,用户)file.managed /etc/profile 1.10 设置终端超时时间(安全考虑) file.managed /etc/profile 1.11 配置yum源(必备) file.managed 1.12 安装各类agent(必备) pkg file service jinja模板 1.13 基础用户(应用用户 user group),用户登陆提醒,sudo权限设置(必备) 1.14 经常使用基础命令,命令别名(必备 screen lrzsz tree openssl telnet iftop iotop sysstat wget ntpdate dos2unix lsof net-tools mtr zip vim nsloopup ) pkg.installed pkgs 1.15 用户登陆提示、PS1的修改 file.managed file.append
暂停的 1.6 SSH服务优化(关闭DNS解析,修改端口) file.managed service 1.10 设置终端超时时间(安全考虑) file.managed /etc/profile
# 修改网卡配置,去掉UUID MAC等(克隆机器问题) [root@linux-node2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 删除或注释HWADDR和UUID两行内容,修改IP 解决CentOS克隆虚拟机没法上网问题(UUID、MAC、IP)https://blog.csdn.net/qq_35428201/article/details/81435679
不能改成bootproto=static ,不然上不了外网html
[root@linux-node1 /etc/rc.d]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="dhcp" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" DEVICE="ens33" ONBOOT="yes" IPADDR=192.168.194.131
删除多余的ip前端
ifconfig del dev ens33 192.168.194.137
重启networknode
[root@linux-node1 ~]# systemctl restart network
显示hostnamemysql
临时 # 重启xshell生效 [root@localhost ~]# hostname linux-node1.example.com [root@localhost ~]# hostname linux-node2.example.com 永久 # 重启系统生效 [root@linux-node1 ~]# vim /etc/hostname linux-node1.example.com
实质:网络上的hostnamelinux
[root@localhost ~]# cat /etc/sysconfig/network # Created by anaconda NETWORKING=yes HOSTNAME=linux-node1.example.com [root@linux-node1 ~]# systemctl restart network
/etc/hosts ios
此文件是在网络上使用的,用于解析计算机名称和IP地址的映射关系git
[root@linux-node1 ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.194.131 linux-node1.example.com linux-node1 192.168.194.132 linux-node2.example.com linux-node2
结论:github
参考blog:https://blog.csdn.net/qq_22310551/article/details/84966044web
hostname是Linux系统下的一个内核参数,它保存在/proc/sys/kernel/hostname下,可是它的值是Linux启动时从rc.sysinit读取的。
在此时进行快照,克隆
[root@linux-node1 /srv/salt/base]# tree . ├── init │?? ├── dns.sls │?? ├── files │?? │?? ├── epel-7.repo │?? │?? ├── limits.conf │?? │?? ├── resolv.conf │?? │?? ├── selinux-config │?? │?? └── sshd_config │?? ├── firewall.sls │?? ├── history.sls │?? ├── init-all.sls │?? ├── limit.sls │?? ├── ntp-client.sls │?? ├── pkg-base.sls │?? ├── selinux.sls │?? ├── ssh.sls │?? ├── sysctl.sls │?? ├── thin.sls │?? ├── tty-style.sls │?? ├── tty-timeout.sls │?? ├── user-redhat.sls │?? └── yum-repo.sls ├── top.sls
[root@linux-node1 /srv/salt/base/init]# vim selinux.sls close_selinux: file.managed: - name: /etc/selinux/config - source: salt://init/files/selinux-config - user: root - group: root - mode: 0644 cmd.run: - name: setenforce 0 || echo ok
[root@linux-node1 /srv/salt/base/init]# cp /etc/selinux/config files/selinux-config [root@linux-node1 /srv/salt/base/init]# vim files/selinux-config
[root@linux-node1 /srv/salt/base/init]# vim firewall.sls firewalld-stop: service.dead: - name: firewalld.service - enable: False
https://docs.saltstack.com/en/latest/ref/states/all/index.html#all-salt-states
https://docs.saltstack.com/en/latest/ref/states/all/salt.states.cron.html#module-salt.states.cron
[root@linux-node1 /srv/salt/base/init]# cat ntp-client.sls install-ntpdate: pkg.installed: - name: ntpdate cron-ntpdate: cron.present: - name: ntpdate cn.pool.ntp.org - user: root - minute: '*/5'
linux命令
https://www.cnblogs.com/zhi-leaf/p/6281549.html
[root@localhost /etc/yum.repos.d]# yum install ntpdate
[root@localhost /etc/yum.repos.d]# date Thu Aug 8 23:01:17 EDT 2019 [root@localhost /etc/yum.repos.d]# vim /etc/crontab */5 * * * * ntpdate cn.pool.ntp.org 分时日月周 [root@localhost /etc/yum.repos.d]# date Fri Aug 9 02:50:05 EDT 2019
[root@linux-node1 /srv/salt/base/init]# cat limit.sls limits-config: file.managed: - name: /etc/security/limits.conf - source: salt://init/files/limits.conf - user: root - group: root - mode: 644
[root@linux-node1 /srv/salt/base/init]# cp /etc/security/limits.conf files/limits.conf [root@linux-node1 /srv/salt/base/init]#
[root@linux-node1 /srv/salt/base/init]# cat sysctl.sls net.ipv4.tcp_fin_timeout: sysctl.present: - value: 2 net.ipv4.tcp_tw_reuse: sysctl.present: - value: 1 net.ipv4.tcp_tw_recycle: sysctl.present: - value: 1 net.ipv4.tcp_syncookies: sysctl.present: - value: 1 net.ipv4.tcp_keepalive_time: sysctl.present: - value: 600 net.ipv4.ip_local_port_range: sysctl.present: - value: 4000 65000 net.ipv4.tcp_max_syn_backlog: sysctl.present: - value: 16384 net.ipv4.tcp_max_tw_buckets: sysctl.present: - value: 36000 net.ipv4.route.gc_timeout: sysctl.present: - value: 100 net.ipv4.tcp_syn_retries: sysctl.present: - value: 1 net.ipv4.tcp_synack_retries: sysctl.present: - value: 1 net.core.somaxconn: sysctl.present: - value: 16384 net.core.netdev_max_backlog: sysctl.present: - value: 16384 net.ipv4.tcp_max_orphans: sysctl.present: - value: 16384 fs.file-max: sysctl.present: - value: 2000000 net.ipv4.ip_forward: sysctl.present: - value: 1
参数说明
/proc/sys/net/ipv4/tcp_fin_timeout 对于本端断开的socket链接,TCP保持在FIN-WAIT-2状态的时间(秒)。对方可能会断开链接或一直不结束链接或不可预料的进程死亡。 /proc/sys/net/ipv4/tcp_tw_reuse 表示是否容许将处于TIME-WAIT状态的socket(TIME-WAIT的端口)用于新的TCP链接 /proc/sys/net/ipv4/tcp_tw_recycle 可以更快地回收TIME-WAIT套接字。 /proc/sys/net/ipv4/tcp_syncookies 表示是否打开TCP同步标签(syncookie),内核必须打开了CONFIG_SYN_COOKIES项进行编译,同步标签能够防止一个套接字在有过多试图链接到达时引发过载 /proc/sys/net/ipv4/tcp_keepalive_time TCP发送keepalive探测消息的间隔时间(秒),用于确认TCP链接是否有效。 /proc/sys/net/ipv4/ip_local_port_range 表示TCP/UDP协议容许使用的本地端口号 /proc/sys/net/ipv4/tcp_max_syn_backlog 对于还未得到对方确认的链接请求,可保存在队列中的最大数目。若是服务器常常出现过载,能够尝试增长这个数字。 /proc/sys/net/ipv4/tcp_max_tw_buckets 该参数设置系统的TIME_WAIT的数量,若是超过默认值则会被当即清除。 /proc/sys/net/ipv4/tcp_syn_retries 对应net.ipv4.tcp_syn_retries 控制内核向某个输入的SYN/ACK段从新发送相应的次数,低值能够更好的检测到远程主机的链接失败。 net.ipv4.tcp_synack_retries = 2 跟参数net.ipv4.tcp_syn_retries同样,只是这个内核参数是控制回应SYN失败的重试次数,默认值也是5,和上面同样修改成2 /proc/sys/net/core/somaxconn 定义了系统中每个端口最大的监听队列的长度,这是个全局的参数。 /proc/sys/net/core/netdev_max_backlog 该参数定义了当接口收到包的速率大于内核处理包的速率时,设备的输入队列中的最大报文数。 /proc/sys/net/ipv4/ip_forward 接口间转发报文 net.ipv4.route.gc_timeout = 100 路由缓存刷新频率, 当一个路由失败后多长时间跳到另外一个默认是300 net.ipv4.tcp_max_orphans 缺省值是8192 系统所能处理不属于任何进程的TCP sockets最大数量(主动关闭端发送了FIN后转到FIN_WAIT_1,这时TCP链接就不属于某个进程了)。假如超过这个数量,那么不属于任何进程的链接会被当即reset,并同时显示警告信息。之因此要设定这个限制,纯粹为了抵御那些简单的 DoS 攻击﹐千万不要依赖这个或是人为的下降这个限制(这个值Redhat AS版本中设置为32768,可是不少防火墙修改的时候,建议该值修改成2000) fs.file-max = 6553600 设置系统全部进程一共能够打开多少个文件句柄,这是一个系统级的设置,管控的是全部进程总共能够同时打开多少文件句柄,若是多个进程打开了较多文件就会致使文件句柄不足,所以设置较大值,不过要注意程序打开的文件越多,就占用更多的内存,所以要根据业务和服务器配置起来设置
linux命令
[root@localhost ~]# sysctl -a |grep ipv4..tcp_tw
[root@localhost /etc/yum.repos.d]# cat /proc/sys/net/ipv4/tcp_tw_recycle 0 [root@localhost ~]# sysctl -w net.ipv4.tcp_tw_reuse=1
[root@localhost ~]# vim /etc/sysctl.conf net.core.rmem_default = 256960 net.core.rmem_max = 513920 net.core.wmem_default = 256960 net.core.wmem_max = 513920 net.core.netdev_max_backlog = 2000 net.core.somaxconn = 2048 net.core.optmem_max = 81920 net.ipv4.tcp_mem = 131072 262144 524288 net.ipv4.tcp_rmem = 8760 256960 4088000 net.ipv4.tcp_wmem = 8760 256960 4088000 net.ipv4.tcp_keepalive_time = 1800 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_sack = 1 net.ipv4.tcp_fack = 1 net.ipv4.tcp_timestamps = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 30 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_max_syn_backlog = 2048
# 当即生效
[root@localhost ~]# /sbin/sysctl -p
参考
https://segmentfault.com/a/1190000019864583
https://blog.csdn.net/jinguangliu/article/details/88256051
https://cloud.tencent.com/developer/article/1173786
https://blog.csdn.net/weixin_34392906/article/details/86021056
https://www.cnblogs.com/OnlyXP/archive/2007/09/29/911269.html
[root@linux-node1 /srv/salt/base/init]# cat ssh.sls sshd-config: file.managed: - name: /etc/ssh/sshd_config - source: salt://init/files/sshd_config - user: root - group: root - mode: 600 service.running: - name: sshd - enable: True - reload: True - watch: - file: sshd-config
[root@linux-node1 /srv/salt/base/init]# cp /etc/ssh/sshd_config files/sshd_config
[root@linux-node1 /srv/salt/base/init]# vim files/sshd_config
只是举个例子
[root@linux-node1 /srv/salt/base/init]# cat thin.sls postfix: service.dead: - enable: False
必须开的几个任务
crond: 计划任务
network:网络服务,控制启用网卡
rsyslog/syslog:操做系统日志服务
ssh: ssh远程服务
systat: 服务器性能监控工具
[root@localhost ~]# systemctl list-unit-files |grep enabled
参考博客
https://blog.51cto.com/9625010/2385687?source=dra
https://blog.51cto.com/cubix/1925264
https://blog.csdn.net/seven_begain/article/details/71213697
https://blog.csdn.net/codetz/article/details/52275721
[root@linux-node1 /srv/salt/base/init]# cat dns.sls /etc/resolv.conf: file.managed: - source: salt://init/files/resolv.conf - user: root - group: root - mode: 644
[root@linux-node1 /srv/salt/base/init]# cp /etc/resolv.conf files/resolv.conf [root@linux-node1 /srv/salt/base/init]# vim files/resolv.conf
[root@linux-node1 /srv/salt/base/init]# cat history.sls history-init: file.append: - name: /etc/profile - text: - export HISTTIMEFORMAT="%F %T `whoami` "
[root@linux-node1 /srv/salt/base/init]# cat tty-timeout.sls tty-timeout: file.append: - name: /etc/profile - text: - export TMOUT=30000000
[root@linux-node1 /srv/salt/base/init]# cat yum-repo.sls /etc/yum.repos.d/epel-7.repo: file.managed: - source: salt://init/files/epel-7.repo - user: root - group: root - mode: 644
[root@linux-node1 /srv/salt/base/init]# cp /etc/yum.repos.d/epel-7.repo files/epel-7.repo
什么是EPEL?
EPEL的全称叫 Extra Packages for Enterprise Linux 。 EPEL是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。 装上了 EPEL以后,就至关于添加了一个第三方源
https://www.cnblogs.com/gaoyuechen/p/7683471.html
https://www.cnblogs.com/fps2tao/p/7580188.html
方法1:
[root@localhost ~]# yum install https://repo.saltstack.com/py3/redhat/salt-ppy3-repo-latest.el7.noarch.rpm
方法2:aliyun镜像 https://mirrors.aliyun.com
[root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# wget https://mirrors.aliyun.com/repo/epel-7.repo
更新
[root@localhost ~]# yum clean expire-cache
zabbix 待定
[root@linux-node1 /srv/salt/base/init]# cat user-redhat.sls redhat-user-group: group.present: - name: redhat - gid: 1000 user.present: - name: redhat - fullname: redhat - shell: /sbin/bash - uid: 1000 - gid: 1000
linux命令
[root@localhost ~]# id redhat [root@localhost ~]# cat /etc/passwd [root@localhost ~]# usermod -h [root@localhost ~]# groupmod -h /bin: 是系统的一些指令. /sbin: 通常是指超级用户指令. /usr/bin: 是你在后期安装的一些软件的运行脚本.
[root@linux-node1 /srv/salt/base/init]# cat pkg-base.sls include: - init.yum-repo base-install: pkg.installed: - pkgs: - screen - lrzsz - tree - openssl - telnet - iftop - iotop - sysstat - wget - dos2unix - lsof - net-tools - mtr - unzip - zip - vim-enhanced - bind-utils - require: - file: /etc/yum.repos.d/epel-7.repo
yum install screen lrzsz tree openssl telnet iftop iotop sysstat wget dos2unix lsof net-tools mtr unzip zip bind-utils vim-enhanced -y
说明
vim-enhanced unzip zip wget tree telnet # 登陆远程主机 iotop # io利用率 screen # 命令行终端切换的自由软件 openssl # 安全套接字层密码库 mtr # 網絡診斷工具。它結合了 traceroute 和 ping 這兩個命令的功能 bind-utils # bind是linux系统下的一个DNS服务程序.bind-utils net-tools # network的命令 lsof # 用于查看你进程开打的文件 dos2unix # DOS格式的文本文件转换成UNIX格式的 iftop # 查看网络流量信息的软件 lrzsz # Linux服务器和window互传文件 sysstat # sysstat提供了Linux性能监控的工具集,包括sar、sadf、mpstat、iostat、pidstat https://blog.51cto.com/fangwei009/2088551
iostat - 提供CPU统计,存储I/O统计(磁盘设备,分区及网络文件系统) mpstat - 提供单个或组合CPU相关统计 pidstat - 提供Linux进程级别统计:I/O、CPU、内存等 sar - 收集、报告、保存系统活动信息:CPU、内存、磁盘、中断、网络接口、TTY、内核表等 sadc - 系统活动数据收集器,做为sar后端使用 sa1 - 收集系统活动平常数据,并二进制格式存储,它做为sadc的工具的前端,能够经过cron来调用 sa2 - 生成系统每日活动报告,一样可做为sadc的工具的前端,能够经过cron来调用 sadf - 能够以CSV、XML格式等显示sar收集的性能数据,这样很是方便的将系统数据导入到数据库中,或导入到Excel中来生成图表 nfsiostat-sysstat: 提供NFS I/O统计 cifsiostat: 提供CIFS统计
[root@linux-node1 /srv/salt/base/init]# vim /etc/bashrc
[root@linux-node1 /srv/salt/base/init]# cat tty-style.sls /etc/bashrc: file.append: - text: - export PS1="[\u@\h \w]\\$ "
test 一个个执行
[root@linux-node1 /srv/salt/base/init]# salt 'linux-node1*' state.sls init.dns
top 执行
[root@linux-node1 /srv/salt/base/init]# cat init-all.sls include: - init.dns - init.yum-repo - init.firewall - init.history - init.limit - init.ntp-client - init.pkg-base - init.selinux - init.ssh - init.sysctl - init.thin - init.tty-timeout - init.tty-style - init.user-redhat
[root@linux-node1 /srv/salt/base]# ls init top.sls web [root@linux-node1 /srv/salt/base]# cat top.sls base: '*': - init.init-all
[root@linux-node1 /srv/salt/base]# salt '*' state.highstate