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