目錄
第二階段項目技術文檔 10
修訂版: 10
一、 技術論壇搭建項目 10
二、 項目拓撲 11
三、 項目需求 11
四、 項目主機規劃 12
五、 Ansible自動化部署服務2.0 13
5.一、 安裝ansible 13
5.二、 配置免密登陸 13
5.三、 建立任務目錄 14
5.四、 批量部署apache 14
5.4.一、 將本服務器上安裝好的apache打包 14
5.4.二、 構建apache任務 14
5.4.三、 輔助安裝腳本 14
5.五、 批量部署_Nginx 15
5.5.四、 將本服務器上安裝好的nginx打包 15
5.5.五、 構建httpd任務 15
5.六、 批量部署PHP 16
5.七、 批量部署MySQL 18
5.八、 批量部署logstash 19
5.九、 批量部署zabbix-agent 19
5.十、 劇本site.yml 20
5.十一、 部署discuz 20
5.11.六、 建立mysql測試帳號,用於discuz 20
5.11.七、 上傳包到root目錄 20
5.11.八、 建立腳本 21
5.11.九、 建立discuz安裝腳本,建議直接在服務器上執行 21
5.11.十、 建立調用腳本 21
5.11.十一、 運行腳本 21
六、 部署MHA 22
6.一、 實驗環境 22
6.1.一、 主機配置。 22
6.1.二、 配置主機名映射。 22
6.1.三、 配置免密認證(全部節點) 22
6.1.四、 上傳軟件包。 22
6.1.五、 Yum安裝軟件依賴包 23
6.1.六、 各個node節點安裝軟件依賴和軟件包 24
6.二、 安裝MHA Manager 24
6.2.七、 安裝MHA Manger依賴的perl模塊 24
6.2.八、 安裝MHA Manager軟件包: 24
6.三、 搭建主從複製環境 25
6.3.九、 在mha-master配置主數據庫服務器 25
6.3.十、 在mha-slave1配置從服務: 25
6.3.十一、 在mah-slave2配置從服務: 27
6.3.十二、 兩臺slave服務器設置read_only 28
6.3.1三、 設置relay log的清除方式(在每一個slave節點上) 28
6.四、 配置MHA 28
6.4.1四、 建立MHA的工做目錄,而且建立相關配置文件 28
6.4.1五、 編寫腳本/usr/bin/master_ip_failover,要會perl腳本語言 29
6.4.1六、 設置VIP地址(master) 31
6.4.1七、 檢查SSH配置 31
6.4.1八、 檢查整個集羣複製環境情況 31
6.4.1九、 開啓MHA Manager監控 32
6.4.20、 查看MHA Manager監控是否正常 32
6.4.2一、 查看啓動狀態 32
6.4.2二、 打開新窗口觀察日誌 32
七、 ceph集羣 33
7.一、 環境準備: 33
7.1.一、 前三臺服務器添加一塊20G的硬盤 33
7.1.二、 關閉selinux,關閉防火牆:(全部節點) 34
7.1.三、 配置hosts文件:(全部節點) 34
7.1.四、 配置ssh免密登陸(管理節點) 34
7.1.五、 上傳軟件包並解壓 34
7.1.六、 yum源配置: 35
7.1.七、 複製ceph軟件包和相關文件到cong12,cong13: 35
7.1.八、 在ceph0,ceph1,ceph2上部署ceph,安裝依賴工具: 35
7.二、 Ceph0的部署: 35
7.2.九、 建立monitor服務: 35
7.2.十、 修改副本數: 36
7.2.十一、 安裝ceph monitor: 36
7.2.十二、 收集節點的keyring文件: 37
7.2.1三、 部署osd服務: 37
7.2.1四、 部署mds服務 40
7.2.1五、 查看集羣狀態 40
7.三、 建立ceph文件系統 40
7.3.1六、 建立以前查看文件系統 40
7.3.1七、 建立存儲池 40
7.3.1八、 建立文件系統 41
7.3.1九、 查看ceph文件系統 41
7.3.20、 查看mds節點狀態 41
7.四、 內核驅動掛載Ceph文件系統 41
7.4.2一、 建立掛載點 41
7.4.2二、 使用密鑰掛載 41
7.4.2三、 使用密鑰文件掛載 42
7.五、 RBD的使用 42
7.5.2四、 檢測liunx內核是否支持RBD 42
7.5.2五、 建立rbd存儲池 42
7.5.2六、 建立指定大小的塊設備 42
7.5.2七、 查看test1信息 42
7.5.2八、 映射進內核 43
7.5.2九、 掛載使用 43
八、 Nginx+apache動靜分離 44
8.一、 部署nginx 44
8.1.一、 上傳所需軟件包並解壓到指定目錄,須要用到rz命令安裝一下。(nginx1) 44
8.1.二、 隱藏版本號 44
8.1.三、 安裝nginx依賴包 45
8.1.四、 預編譯 45
8.1.五、 編譯安裝 45
8.1.六、 啓動查看nginx端口 45
8.1.七、 查看版本號,進行網頁測試 45
8.1.八、 修改 nginx運行帳號 46
8.1.九、 生成nginx啓動腳本 47
8.1.十、 配置服務開機自啓動 47
8.二、 部署apache(兩臺都須要) 48
8.2.十一、 上傳所需軟件包並解壓到指定目錄 48
8.2.十二、 隱藏版本信息 48
8.2.1三、 安裝apache依賴包 48
8.2.1四、 若是有就刪除以前的httpd 49
8.2.1五、 預編譯&編譯安裝 49
8.2.1六、 修改主配置文件,加快apache重啓速度 49
8.2.1七、 設置apache啓動腳本 49
8.2.1八、 設置腳本開機自啓動 49
8.2.1九、 啓動服務,設置軟鏈接 50
8.2.20、 插卡版本號,進行訪問網頁測試 50
8.2.2一、 再次修改配置文件(隱藏版本號) 50
8.2.2二、 修改apache運行帳號 51
8.三、 在apache上搭建php 52
8.3.2三、 上傳libmcrypt,php軟件包並解壓到指定目錄下 52
8.3.2四、 進入到libmcrypt解壓目錄下,編譯及安裝 52
8.3.2五、 PHP預編譯 53
8.3.2六、 編譯及安裝 53
8.3.2七、 生成配置文件 53
8.3.2八、 添加apache支持php模塊 53
8.3.2九、 建立php測試頁面,mysql鏈接頁面 53
8.3.30、 重啓httpd服務,網頁測試 54
8.四、 Apache2和apache1配置相同 55
8.五、 配置nginx負載均衡 55
8.5.3一、 修改nginx主配置文件 55
8.5.3二、 重啓nginx服務器,,在apache編輯測試文件,訪問網頁測試 55
8.六、 配置nginx動靜分離 56
8.6.3三、 修改nginx配置文件 56
8.6.3四、 測試動靜分離 57
8.七、 搭建discuz論壇(在apache) 58
8.7.3五、 上傳discuz軟件包,並解壓到指定目錄下 58
8.7.3六、 拷貝論壇到網站根目錄下 58
8.7.3七、 修改php.ini文件 58
8.7.3八、 重啓httpd,打開網頁安裝discuz 58
8.7.3九、 把apache上的/usr/local/bbs/和/ust/local/httpd/htdos/bbs傳到nginx上 60
8.八、 Apache2和apache1配置相同 61
8.九、 Nginx優化 61
8.9.40、 設置nginx運行進程個數 61
8.9.4一、 Nginx運行cpu親和力4核4線程配置 61
8.9.4二、 設置nginx最大打開文件數 62
8.9.4三、 http主體優化 62
8.9.4四、 修改網站域名 63
8.9.4五、 Fastcgi調優 63
8.9.4六、 Gzip調優 64
8.9.4七、 日誌切割優化 65
8.9.4八、 目錄文件訪問控制 67
8.9.4九、 對目錄進行訪問限制 68
8.9.50、 防盜鏈 68
九、 LVS+Keepalived負載羣集 69
9.一、 LVS環境安裝配置(lvs1/lvs2) 69
9.1.一、 安裝ipvsadm工具 69
9.二、 Keepalived環境安裝配置 69
9.2.二、 安裝keepalived 69
9.2.三、 Keepalived配置 69
9.2.四、 查看VIP 72
9.2.五、 測試keepalived故障轉移 73
9.2.六、 Real server(web 服務器)綁定 VIP 74
9.2.七、 測試使用VIP訪問網頁 75
十、 elk+kafka引入消息隊列 76
10.二、 上傳軟件包 76
10.三、 安裝JDK 77
10.四、 安裝elasticsearch 77
10.4.二、 建立用戶 77
10.4.三、 修改系統參數 77
10.4.四、 啓動elasticsearch 78
10.4.五、 測試 78
10.五、 安裝ElasticSearch-head(可略) 79
10.六、 安裝Logstash 80
10.七、 安裝kibana 82
10.7.六、 解壓安裝包 82
10.7.七、 編譯配置文件 82
10.7.八、 啓動服務 83
10.7.九、 測試 83
10.八、 在被收集端安裝Filebeat,實現與Logstash對接 86
10.8.十、 上傳軟件包 86
10.8.十一、 解壓軟件包 87
10.8.十二、 安裝jdk 87
10.8.1三、 安裝logstash 87
10.8.1四、 編譯配置文件 88
10.8.1五、 配置Logstash上的配置文件 89
10.8.1六、 開啓filebeat進程 90
10.8.1七、 驗證 90
10.九、 引入消息隊列ELK+kafka 92
10.9.1八、 安裝nginx 92
10.9.1九、 nginx上安裝logstash(安裝zookeeper+kafka) 93
10.9.20、 安裝kafka 94
10.十、 上傳軟件包 95
10.十一、 -安裝jdk 96
10.十二、 解壓軟件包 97
10.1三、 生成配置文件 97
10.1四、 在kafka(被收集日誌端)配置Logstash 98
10.14.2一、 解壓軟件包 98
10.14.2二、 生成配置文件 99
10.14.2三、 測試 99
十一、 Zabbix 101
11.二、 創建時間同步環境,在zabbix-server上搭建時間同步服務器 101
11.2.二、 安裝NTP(關閉防火牆/selinux) 101
11.2.三、 配置NTP 101
11.2.四、 重啓服務並設置爲開機啓動 102
11.2.五、 在其餘服務器上進行時間同步(關閉防火牆/selinux) 102
11.三、 建立zabbix數據庫和受權用戶: 102
11.3.六、 受權 102
11.3.七、 導入數據庫文件: 103
11.四、 安裝Zabbix-Server服務器 103
11.4.八、 在zabbix-server上編譯安裝zabbix: 103
11.4.九、 編輯配置文件並啓動: 104
11.4.十、 查看監聽端口’ 104
11.4.十一、 設置啓動腳本 105
11.4.十二、 作軟鏈接 105
11.4.1三、 設置自啓動 105
11.五、 安裝Zabbix-Web服務器(編譯安裝nginx) 105
11.5.1四、 Nginx安裝及優化 105
11.5.1五、 php安裝 110
11.5.1六、 配置zabbix的web頁面 117
11.5.1七、 查看當前系統時區 117
11.5.1八、 修改配置文件,以支持zabbix 117
11.5.1九、 安裝zabbix 118
11.5.20、 若是想從新指定數據庫和nginx的地址,能夠在配置文件中指定 121
11.六、 Zabbix用戶管理 122
11.6.2一、 修改密碼 122
11.6.2二、 建立用戶 124
11.6.2三、 點擊添加能夠加入到相應的羣組 125
11.6.2四、 上傳simkai.ttf包,解決Zabbix中文亂碼 上傳simkai.ttf包 125
11.七、 安裝Zabbix-Agent端 126
11.7.2五、 在mha-slave1主機上安裝: 126
11.7.2六、 編輯配置文件: 127
11.7.2七、 設置爲系統服務,添加軟鏈接 128
11.7.2八、 設置自啓動 128
11.八、 添加羣組和主機 128
11.8.2九、 建立羣組 128
11.8.30、 添加主機 129
11.8.3一、 添加模板 130
11.8.3二、 查看圖形 132
11.九、 監控指定端口 132
11.9.3三、 Zabbix 監控指定端口(好比mysql端口) 132
11.9.3四、 建立一個模板 132
11.9.3五、 建立監控項 134
11.9.3六、 觸發器設置 136
11.9.3七、 將模板應用到主機 138
11.9.3八、 查看最新數據 138
11.9.3九、 也能夠查看圖形 139
11.9.40、 測試監控 139
11.十、 發送郵件報警 141
11.10.4一、 註冊郵箱 141
11.10.4二、 安裝mailx軟件 142
11.10.4三、 編輯配置文件 142
11.10.4四、 發送測試郵件 142
11.10.4五、 查看測試郵件 142
11.10.4六、 配置發送郵件腳本 143
11.10.4七、 Web頁面上配報警置 144
11.10.4八、 測試 154
11.十一、 動態添加php模塊 157
11.11.4九、 添加bcmath模塊 157
11.11.50、 添加gd模塊 157
11.11.5一、 添加gettext模塊 158
十二、 DNS部署 159
12.一、 主DNS部署 159
12.1.一、 實驗環境 159
12.1.二、 安裝所需軟件包 159
12.1.三、 編輯DNS的主配置文件 159
12.1.四、 編輯區域配置 159
12.1.五、 配置主區域正向數據文件 160
12.1.六、 編輯反向區域解析文件 160
12.1.七、 檢查配置文件 160
12.1.八、 啓動named 161
12.1.九、 驗證正反DNS解析 161
12.二、 從DNS部署 161
12.2.十、 安裝所需軟件包 161
12.2.十一、 編寫主配置文件 161
12.2.十二、 編寫區域文件 162
12.2.1三、 啓動服務 162
12.2.1四、 修改想要訪問的DNS 162
12.2.1五、 查看slaves文件夾是否同步區域文件 163
12.2.1六、 驗證 163javascript
一、技術論壇搭建項目
項目簡介
公司現階段須要搭建一個技術論壇對外網提供服務,網站設計要求達到高可用,高負載,而且添加監控,備份。
項目拓撲
項目需求
一、使用LVS+ keeplive實現負載均衡
二、使用nginx/hapoxy實現反向代理
三、使用nginx和apache實現動靜分離
四、使用MHA搭建mysql集羣
五、使用ceph集羣做分佈式存儲
六、搭建discuz論壇
七、搭建DNS解析網站域名
八、搭建ELK+kafka/redis集羣收集網站日誌
九、使用zabbix監控各個服務器硬件指標及服務端口
十、備份mysql數據庫到ceph集羣
十一、使用ansble批量部署nginx、apache、php、zabbix-agent、logstash , nginx和apache,php,mysqlphp
項目主機規劃
主機名 IP 角色 安裝軟件 所屬集羣
Ansible 192.168.43.71 ansible ansible NULL
Mha-manager 192.168.43.10 manager mha mha
Mha-master 192.168.43.11
VIP:192.168.43.110 Master Mysql Mha
Mha-slave1 192.168.43.12 Slave1 Mysql Mha
Mha-slave2 192.168.43.13 Salve2 Mysql mha
Ceph0 192.168.43.41 Admin/Osd/mgr ceph ceph
Ceph1 192.168.43.42 Osd,mds ceph ceph
Ceph2 192.168.43.43 Osd,mds ceph ceph
Ceph3 192.168.43.44 client ceph ceph
Nginx1 192.168.43.31 Nginx Nginx,discuz Wed
Nginx2 192.168.43.32 Nginx Nginx,disvuz Wed
Apache1 192.168.43.33 Apache Apache,php,discuz Wed
Apache2 192.168.43.34 Apache Apache,php,discuz Wed
LVS DIP:192.168.43.60
VIP:192.168.43.100 MASTER ipvsadm、keepalived LVS
LVS DIP:192.168.43.61
VIP:192.168.43.100 BACKUP ipvsadm、keepalived LVS
Elk 192.168.43.80 elk Elasticsearch、jdk、node、elasticsearch-head-master、kibana、logstash Elk
filebeat 192.168.43.81 Filebeat Filebeat、kibana、jdk elk
Logstash 192.168.43.82 logstash Logstash、jdk elk
Zabbix-server 192.168.43.20 Zabbix-server zabbix-3.2.6.tar.gz Zabbix
dns1 192.168.43.50 主DNS Bind DNS
dns2 192.168.43.51 備DNS Bind DNScss
Ansible自動化部署服務2.0
安裝ansible
[root@ansible ~]# vim /etc/yum.repos.d/renzeizuofu.repo
[ansib]
name=ansible
baseurl=file:///root/ansible
enabled=1
gpgcheck=0
[root@ansible ~]# ls
ansible.tar.gz
[root@ansible ~]# tar -zxf ansible.tar.gz
[root@ansible ~]# yum -y install ansible
配置免密登陸
[root@ansible ~]# ssh-keygen
[root@ansible ~]# ssh-copy-id 192.168.10.1
[root@ansible ~]# ssh-copy-id 192.168.10.2
[root@ansible ~]# ssh-copy-id 192.168.10.3
[root@ansible ~]# ssh-copy-id 192.168.10.4
[root@ansible ~]# ssh-copy-id 192.168.10.5html
建立任務目錄
[root@ansible ~]# mkdir -p /etc/ansible/GspTest/{nginx,apache,php,zabbix-agent,logstash}/{tasks,files,templates,vars,meta,default,handlers}
批量部署apache
將本服務器上安裝好的apache打包
[root@ansible ~]# cd /etc/ansible/GspTest/apache/
[root@ansible apache]# ls files/
apache.sh apache.tar.gzjava
構建apache任務
[root@ansible apache]# vim tasks/main.yml node
find $(echo $PATH | awk -F ':' '{print $1,$2,$3,$4}') -name httpd | wc -l
find $(echo $PATH | awk -F ':' '{print $1,$2,$3,$4}') -name nginx | wc -l
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "\$1" in
start)
\$PROG
;;
stop)
kill -3 \$(cat \$PIDF)
;;
restart)
\$0 stop &> /dev/null
if [ \$? -ne 0 ] ; then continue ; fi
\$0 start
;;
reload)
kill -1 \$(cat \$PIDF)
;;
*)
echo "Userage: \$0 { start | stop | restart | reload }"
exit 1
esac
exit 0
EOF
chmod +x /etc/init.d/nginx && chkconfig --add nginx && chkconfig nginx on
else
for i in {0..20}; do echo "You has a nginx,please remove" >> /dev/pts/$i; done
fi
批量部署PHP
[root@ansible ~]# cd /etc/ansible/GspTest/php
[root@ansible php]# ls files/
libmcrypt-2.5.7.tar.gz php-5.6.36.tar.gz php.sh
[root@ansible php]# vim tasks/main.ymlpython
B=$(ls $php | wc -l)
if [ $B -gt 0 ]; then
tar zxf $php -C /usr/local/src/
E=$(ls -l /usr/local/src/ |grep ^d | grep php | awk '{print $9}')
cd /usr/local/src/$E
./configure --prefix=/usr/local/$E --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/usr/local/php5.6/etc/ --with-bz2 --enable-maintainer-zts --with-apxs2=/usr/local/httpd/bin/apxs &&
for i in {0..20}; do echo "PHP,Configure OK,now makefile" >> /dev/pts/$i; done
make &&
make install &&
for i in {0..20}; do echo "PHP install complete !!!" >> /dev/pts/$i; done
rm -rf /usr/local/$E/etc/php.ini && cp php.ini-production /usr/local/$E/etc/php.ini
else
for i in {0..20}; do echo "PHP軟件包不存在!" >> /dev/pts/$i; done
fimysql
if [ $? -eq 0 ];then
cd $apache
YourIP=$(ifconfig | sed -n 2p | awk -F ' ' '{print $2}')
sed -i '/DirectoryIndex index.html/s/index.html/index.html index.php/g' conf/httpd.conf
sed -i '/\<IfModule mime_module\>/a\AddType application/x-httpd-php .php .phtml' conf/httpd.conf
sed -i "/ServerName www.example.com/a\ServerName $YourIP:80" conf/httpd.conf
echo "<?php
phpinfo();
?>" > /usr/local/httpd/htdocs/index.php
systemctl restart httpd
fi
批量部署MySQL
[root@ansible ~]# cd /etc/ansible/GspTest/mysql/
[root@ansible mysql]# ls files/
mysql.sh mysql.tar.gz
[root@ansible mysql]# vim tasks/main.yml linux
rpm -qa mariadb* boost* | wc -l
-eq 0 ] ;then劇本site.yml
[root@ansible ~]# cd /etc/ansible/GspTest/
[root@ansible GspTest]# vim site.ymlnginx
部署discuz
建立mysql測試帳號,用於discuz
[root@mha-master ~]# mysql -uroot -p123456 -p 192.168.43.110
mysql> grant all on . to test@'%' identified by '123456';
mysql> flush privileges;
上傳包到root目錄
[root@ansible ~]# ls
Discuz_7.2_FULL_SC_UTF8.zip
建立腳本
建立discuz安裝腳本,建議直接在服務器上執行
[root@ansible ~]# vim /etc/ansible/discuz.sh
#!/bin/bash
#PHP的配置文件的目錄
phpconf=find / -name php.ini
#網站目錄
wz='/usr/local/nginx/html'
#解壓discuz
unzip Discuz_7.2_FULL_SC_UTF8.zip -d /usr/local/bbs
cd /usr/local/bbs
#拷貝文件到網站目錄
cp -r upload/ $wz/bbs
#設置php支持
sed -i 's/short_open_tag \= Off/short_open_tag \= On/' $phpconf
#賦予論壇目錄寫權限
chmod -R 777 $wz/bbs/
#重啓php
/etc/init.d/php-fpm restart
建立調用腳本
[root@ansible ~]# vim andiscuz.sh
#!/bin/bash
#須要安裝的discuz軟件包名
Discuz='Discuz_7.2_FULL_SC_UTF8.zip'
#拷貝軟件包到指定服務器
ansible -i /etc/ansible/hosts web -m copy -a "src=/root/$Discuz dest=/root"
#運行discuz安裝腳本
ansible -i /etc/ansible/hosts web -m script -a "/etc/ansible/discuz.sh"
運行腳本
[root@ansible ~]# sh andiscuz.sh
部署MHA
實驗環境
主機配置。
配置主機名映射。
[root@mha-manager ~]# vim /etc/hosts
192.168.43.10 mha-manager
192.168.43.11 mha-master
192.168.43.12 mha-slave1
192.168.43.13 mha-slave2
配置免密認證(全部節點)
[root@mha-manager ~]# ssh-keygen -t rsa
[root@mha-manager ~]# ssh-copy-id 192.168.43.10
[root@mha-manager ~]# ssh-copy-id 192.168.43.11
[root@mha-manager ~]# ssh-copy-id 192.168.43.12
[root@mha-manager ~]# ssh-copy-id 192.168.43.13
上傳軟件包。
[root@mha-manager ~]# ls
mha4mysql-manager-0.57-0.el7.noarch.rpm
mha4mysql-node-0.57-0.el7.noarch.rpm
mhapath.tar.gz
Yum安裝軟件依賴包
安裝軟件依賴包
[root@mha-manager ~]# vim /etc/yum.repos.d/mhapath.repo
[mha]
name=mhapath
baseurl=file:///root/mhapath
enabled=1
gpgchack=0
[root@mha-manager ~]# tar -zxvf mhapath.tar.gz
配置本地yum
[root@mha-manager ~]# vim /etc/yum.repos.d/centos7.repo
[centos7]
name=centos7
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@mha-manager ~]# ls /etc/yum.repos.d/
centos7.repo mhapath.repo
[root@mha-manager ~]# tar -zxvf mhapath.tar.gz
[root@mha-manager ~]# mount /dev/sr0 /mnt
拷貝軟件包和yum配置文件到其餘節點
[root@mha-manager ~]# scp -r /etc/yum.repos.d/ 192.168.43.11:/etc/yum.repos.d/
[root@mha-manager ~]# scp -r /etc/yum.repos.d/ 192.168.43.12:/etc/yum.repos.d/
[root@mha-manager ~]# scp -r /etc/yum.repos.d/ 192.168.43.13:/etc/yum.repos.d/
[root@mha-manager ~]# scp -r /root/mha4mysql-node-0.57-0.el7.noarch.rpm 192.168.43.11:/root
[root@mha-manager ~]# scp -r /root/mha4mysql-node-0.57-0.el7.noarch.rpm 192.168.43.12:/root
[root@mha-manager ~]# scp -r /root/mha4mysql-node-0.57-0.el7.noarch.rpm 192.168.43.13:/root
[root@mha-manager ~]# scp -r mhapath 192.168.43.11:/root
[root@mha-manager ~]# scp -r mhapath 192.168.43.12:/root
[root@mha-manager ~]# scp -r mhapath 192.168.43.13:/root
各個node節點安裝軟件依賴和軟件包
[root@mha-manager ~]# yum -y install perl-DBD-MySQL perl-Config-Tiny perl-Log- Dispatch perl-Parallel-ForkManager --skip-broken –nogpgcheck
[root@mha-manager ~]# rpm -ivh mha4mysql-node-0.57-0.el7.noarch.rpm
[root@mha-slave2 ~]# cd /usr/bin
[root@mha-slave2 bin]# ll app filter purge save
-rwxr-xr-x 1 root root 16381 5月 31 2015 apply_diff_relay_logs
-rwxr-xr-x. 1 root root 46256 6月 10 2014 filterdiff
-rwxr-xr-x 1 root root 4807 5月 31 2015 filter_mysqlbinlog
-rwxr-xr-x 1 root root 8261 5月 31 2015 purge_relay_logs
-rwxr-xr-x 1 root root 7525 5月 31 2015 save_binary_logs
安裝MHA Manager
安裝MHA Manger依賴的perl模塊
[root@mha-manager ~]# yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-CPAN -y --nogpgcheck
安裝MHA Manager軟件包:
[root@mha-manager ~]# rpm -ivh mha4mysql-manager-0.57-0.el7.noarch.rpm
安裝完成後會在/usr/bin目錄下面生成如下腳本文件:
搭建主從複製環境
在mha-master配置主數據庫服務器
配置my.cnf:
[root@mha-master ~]# vim /etc/my.cnf
log-bin=mysql-bin-master #啓用二進制日誌
server-id=1 #本機數據庫ID 標示
binlog-ignore-db=mysql #不能夠被從服務器複製的庫
[root@mha-master ~]# systemctl restart mysqld
建立須要同步的數據庫:
[root@mha-master ~]# mysql -uroot -p123456
[root@ mha-master ~]# mysql -uroot -p123456
mysql> create database HA;
mysql> use HA;
mysql> create table test(id int,name varchar(20));
受權
repl用戶用來主從同步,root用戶給MHA使用
mysql> grant replication slave on . to repl@'192.168.43.%' identified by '123456';
mysql> grant all privileges on . to 'root'@'192.168.43.%' identified by '123456';
mysql> flush privileges; #刷新權限
在mha-slave1配置從服務:
配置my.cnf:
[root@mha-slave1 ~]# vim /etc/my.cnf
log-bin=mysql-slave1 #啓用二進制日誌
server-id=2 #本機數據庫ID 標示
binlog-ignore-db=mysql #不能夠被從服務器複製的庫
[root@mha-slave1 ~]# systemctl restart mysqld
受權
[root@mha-slave1 ~]# mysql -uroot -p123456
mysql> grant replication slave on . to 'repl'@'192.168.43.%' identified by '123456';
mysql> grant all privileges on .* to 'root'@'192.168.43.%' identified by '123456';
mysql> flush privileges; #刷新權限
創建主從關係
mysql> stop slave;
mysql> change master to master_host='192.168.43.11',master_user='repl',master_password='123456';
mysql> start slave;
mysql> show slave status\G
s
在mah-slave2配置從服務:
配置my.cnf:
[root@mha-slave2 ~]# vim /etc/my.cnf
log-bin=mysql-slave1 #啓用二進制日誌
server-id=3 #本機數據庫ID 標示
binlog-do-db=HA #能夠被從服務器複製的庫。二進制須要同步的數據庫名
log_slave_updates=1 #只有開啓log_slave_updates,從庫binlog纔會記錄主庫同步的操做日誌
[root@mha-slave2 ~]# systemctl restart mysqld
[root@ mha-slave2~]# mysql -uroot -p123456
mysql> grant replication slave on . to 'repl'@'192.168.43.%' identified by '123456';
mysql> grant all privileges on . to 'root'@'192.168.43.%' identified by '123456';
mysql> flush privileges; #刷新權限
創建主從關係
mysql> stop slave;
mysql> change master to master_host='192.168.43.11',master_user='repl',master_password='123456';
mysql> start slave;
mysql> show slave status\G
兩臺slave服務器設置read_only
從庫對外提供讀服務,只因此沒有寫進配置文件,是由於slave隨時會提高爲master
[root@mha-slave1 ~]# mysql -uroot -p123456 -e 'set global read_only=1
[root@mha-slave2 ~]# mysql -uroot -p123456 -e 'set global read_only=1
設置relay log的清除方式(在每一個slave節點上)
[root@mha-slave1 ~]# mysql -uroot -p123456 -e 'set global relay_log_purge=0'
[root@mha-slave2 ~]# mysql -uroot -p123456 -e 'set global relay_log_purge=0'
配置MHA
建立MHA的工做目錄,而且建立相關配置文件
[root@mha-manager ~]# mkdir -p /etc/masterha
[root@mha-manager ~]# mkdir -p /var/log/masterha/app1
[root@mha-manager ~]# vim /etc/masterha/app1.cnf
[server default]
manager_log=/var/log/masterha/app1/manager.log
manager_workdir=/var/log/masterha/app1
master_binlog_dir=/usr/local/mysql/data #本身mysql的data目錄,三個主從的data目錄要一致
password=123456
remote_workdir=/tmp
repl_password=123456
repl_user=repl
[server default]
manager_log=/var/log/masterha/app1/manager.log
manager_workdir=/var/log/masterha/app1
master_binlog_dir=/data/mysql/data
password=123456
remote_workdir=/tmp
repl_password=123456
repl_user=repl
ssh_user=root
user=root
master_ip_failover_script=/usr/bin/master_ip_failover #開啓腳本
[server1]
hostname=192.168.43.11
port=3306
[server2]
candidate_master=1
check_repl_delay=0
hostname=192.168.43.12
port=3306
[server3]
hostname=192.168.43.13
port=3306
編寫腳本/usr/bin/master_ip_failover,要會perl腳本語言
[root@mha-manager ~]# vim /usr/bin/master_ip_failover
#!/usr/bin/env perl
use strict;
use warnings FATAL => 'all';
use Getopt::Long;
my (
$command, $ssh_user, $orig_master_host, $orig_master_ip,
$orig_master_port, $new_master_host, $new_master_ip, $new_master_port
);
my $vip = '192.168.43.110/24';
my $key = '1';
my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip";
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down";
GetOptions(
'command=s' => \$command,
'ssh_user=s' => \$ssh_user,
'orig_master_host=s' => \$orig_master_host,
'orig_master_ip=s' => \$orig_master_ip,
'orig_master_port=i' => \$orig_master_port,
'new_master_host=s' => \$new_master_host,
'new_master_ip=s' => \$new_master_ip,
'new_master_port=i' => \$new_master_port,
);
exit &main();
sub main {
print "\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n"; if ( $command eq "stop" || $command eq "stopssh" ) { my $exit_code = 1; eval { print "Disabling the VIP on old master: $orig_master_host \n"; &stop_vip(); $exit_code = 0; }; if ($@) { warn "Got Error: $@\n"; exit $exit_code; } exit $exit_code; } elsif ( $command eq "start" ) { my $exit_code = 10; eval { print "Enabling the VIP - $vip on the new master - $new_master_host \n"; &start_vip(); $exit_code = 0; }; if ($@) { warn $@; exit $exit_code; } exit $exit_code; } elsif ( $command eq "status" ) { print "Checking the Status of the script.. OK \n"; #`ssh $ssh_user\@cluster1 \" $ssh_start_vip \"`; exit 0; } else { &usage(); exit 1; }
}
[root@mha-manager ~]# chmod +x /usr/bin/master_ip_failover
設置VIP地址(master)
[root@mha-master ~]# ifconfig ens33:1 192.168.43.110 netmask 255.255.255.0 up
檢查SSH配置
[root@mha-manager ~]# masterha_check_ssh --conf=/etc/masterha/app1.cnf
檢查整個集羣複製環境情況
[root@ mha-manager ~]# rm -rf /var/log/masterha/app1/app1.master_status.health
[root@mha-manager ~]# masterha_check_repl --conf=/etc/masterha/app1.cnf
須要作軟鏈接:ln-s /usr/local/mysql/bin/* /usr/local/bin
開啓MHA Manager監控
[root@ mha-manager ~]# nohup masterha_manager --conf=/etc/masterha/app1.cnf \
--remove_dead_master_conf --ignore_last_failover < /dev/null > \
/var/log/masterha/app1/manager.log 2>&1 &
[1] 22627
查看MHA Manager監控是否正常
[root@mha-manager ~]# masterha_check_status --conf=/etc/masterha/app1.cnf
app1 (pid:23108) is running(0:PING_OK), master:192.168.43.11
查看啓動狀態
[root@mha-manager ~]# tail -n20 /var/log/masterha/app1/manager.log
打開新窗口觀察日誌
[root@mha-manager ~]# tail -f /var/log/masterha/app1/manager.log
ceph集羣
環境準備:
前三臺服務器添加一塊20G的硬盤
關閉selinux,關閉防火牆:(全部節點)
systemctl stop firewalld #關閉防火牆
setenforce 0 #關閉防禦
配置hosts文件:(全部節點)
vim /etc/hosts
192.168.43.40 ceph0
192.168.43.41 ceph1
192.168.43.43 ceph2
192.168.43.44 ceph3
配置ssh免密登陸(管理節點)
ssh-keygen #一直回車,不設密
ssh-copy-id ceph0
ssh-copy-id ceph1
ssh-copy-id ceph2
ssh-copy-id ceph3
上傳軟件包並解壓
[root@ceph0 ~]# tar -zxvf ceph-12.2.12.tar.gz
yum源配置:
[root@ceph0 ~]# mount /dev/cdrom /mnt #掛載光盤
[root@ceph0 ~]# vim /etc/yum.repos.d/a.repo
[a]
name=a
baseurl=file:///mnt/
gpgcheck=0
enable=1
[root@ceph0 ~]# vim /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=file:///root/ceph
enabled=1
gpgcheck=0
複製ceph軟件包和相關文件到cong12,cong13:
[root@ceph0 ~]# scp -r ceph ceph1:/root
[root@ceph0 ~]# scp -r ceph ceph2:/root
[root@ceph0 ~]# scp -r /etc/yum.repos.d/ceph.repo ceph1:/etc/yum.repos.d/
[root@ceph0 ~]# scp -r /etc/yum.repos.d/ceph.repo ceph2:/etc/yum.repos.d/
在ceph0,ceph1,ceph2上部署ceph,安裝依賴工具:
[root@ceph0 ~]# yum install -y ceph-deploy ceph ceph-radosgw snappy leveldb gdisk python-argparse gperftools-libs
Ceph0的部署:
建立monitor服務:
同時在ceph1,ceph2上部署mon,實現高可用
[root@ceph0 ~]# cd /etc/ceph/
[root@ceph0 ceph]# ceph-deploy new ceph0
修改副本數:
[root@ceph0 ceph]# cd /etc/ceph/
[root@ceph0 ceph]# vim ceph.conf
[global]
fsid = 73d389f3-b720-453f-a50b-fde0f69a0eb3
mon_initial_members = ceph0
mon_host = 192.168.43.40
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd_pool_default_size = 2 #添加到末行
安裝ceph monitor:
[root@ceph0 ceph]# ceph-deploy mon create ceph0
收集節點的keyring文件:
[root@ceph0 ceph]# ceph-deploy gatherkeys ceph0
[root@ceph0 ceph]# ls
[root@ceph0 ceph]# cat ceph.client.admin.keyring
[client.admin]
key = AQCrAENd5+FbNxAAtWNYcU0KNMMN/xahK7uu8A==
部署osd服務:
使用ceph自動分區:
[root@ceph0 ceph]# ceph-deploy disk zap ceph0 /dev/sdb
[root@ceph0 ceph]# ceph-deploy disk zap ceph1 /dev/sdb
[root@ceph0 ceph]# ceph-deploy disk zap ceph2 /dev/sdb
添加osd節點:
[root@ceph0 ceph]# ceph-deploy osd create ceph0 --data /dev/sdb
[root@ceph0 ceph]# ceph-deploy osd create ceph1 --data /dev/sdb
[root@ceph0 ceph]# ceph-deploy osd create ceph2 --data /dev/sdb
查看狀態:
[root@ceph0 ceph]# ceph-deploy osd list ceph0 ceph1 ceph2
部署mgr管理服務
[root@ceph0 ceph]# ceph-deploy mgr create ceph0
統一集羣配置
[root@ceph0 ceph]# ceph-deploy admin ceph0 ceph1 ceph2 ceph3
若是ceph3報錯在ceph3里加入[root@ceph3 ~]# mkdir /etc/ceph
各個節點修改ceph.client.admin.keyring權限
[root@ceph0 ceph]# chmod +r /etc/ceph/ceph.client.admin.keyring
[root@ceph1 ~]# chmod +r /etc/ceph/ceph.client.admin.keyring
[root@ceph2 ~]# chmod +r /etc/ceph/ceph.client.admin.keyring
[root@ceph3 ~]# chmod +r /etc/ceph/ceph.client.admin.keyring
部署mds服務
安裝mds
[root@ceph0 ceph]# ceph-deploy mds create ceph1 ceph2
查看mds服務
[root@ceph0 ceph]# ceph mds stat
, 2 up:standby
查看集羣狀態
[root@ceph0 ceph]# ceph -s
建立ceph文件系統
建立以前查看文件系統
[root@ceph0 ceph]# ceph fs ls
No filesystems enabled
建立存儲池
[root@ceph0 ceph]# ceph osd pool create cephfs_data 128
pool 'cephfs_data' created
[root@ceph0 ceph]# ceph osd pool create cephfs_metadata 128
pool 'cephfs_metadata' created
建立文件系統
[root@ceph0 ceph]# ceph fs new cephfs cephfs_metadata cephfs_data
new fs with metadata pool 2 and data pool 1
查看ceph文件系統
[root@ceph0 ceph]# ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
查看mds節點狀態
[root@ceph0 ~]# ceph mds stat
cephfs-1/1/1 up {0=ceph2=up:active}, 1 up:standby
內核驅動掛載Ceph文件系統
建立掛載點
[root@ceph3 ~]# mkdir /media/aa
[root@ceph0 ~]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
key = AQAzN0NdWGpaJxAAyulOHB/+r2OH55yEm2w1NA==
使用密鑰掛載
[root@ceph3 ~]# mount -t ceph 192.168.43.41:/ /media/aa -o name=admin,secret=AQAzN0NdWGpaJxAAyulOHB/+r2OH55yEm2w1NA==
[root@ceph0 ~]# df -h
使用密鑰文件掛載
拷貝ceph軟件包和yum配置文件到cong14
[root@ceph0 ~]# scp -r ceph ceph3:/root
[root@ceph0 ~]# scp -r ceph ceph3:/rootscp /etc/yum.repos.d/ceph-package.repo ceph3:/etc/yum.repos.d/
安裝ceph-common-12.2.12
[root@ceph3 ~]# yum install -y ceph-common-12.2.12
建立密鑰文件
[root@ceph4~]# vim /etc/ceph/admin.secret
key = AQAzN0NdWGpaJxAAyulOHB/+r2OH55yEm2w1NA==
RBD的使用
檢測liunx內核是否支持RBD
[root@ceph0 ~]# modprobe rbd
建立rbd存儲池
[root@ceph0 ~]# ceph osd pool create rbd 64
pool 'rbd' created
建立指定大小的塊設備
[root@ceph0 ~]# rbd create --size 102400 rbd/test1
查看test1信息
[root@ceph0 ~]# rbd info test1
映射進內核
[root@ceph0 ~]# rbd feature disable test1 object-map fast-diff deep-flatten exclusive-lock
[root@ceph0 ~]# rbd map test1
/dev/rbd0
[root@ceph0 ~]# ls /dev/rbd0
/dev/rbd0
掛載使用
[root@ceph0 ~]# mkdir /media/cephrbd
格式化分區
[root@ceph0 ~]# mkfs.xfs /dev/rbd0
掛載
[root@ceph0 ~]# mount /dev/rbd0 /media/cephrbd/
Nginx+apache動靜分離
部署nginx
上傳所需軟件包並解壓到指定目錄,須要用到rz命令安裝一下。(nginx1)
[root@nginx1 ~]# yum -y install lrzsz
[root@nginx1 ~]# rz
[root@nginx1 ~]# ls
[root@nginx1 ~]# tar -zxf nginx-1.10.3.tar.gz -C /usr/local/src/
隱藏版本號
[root@nginx1 ~]# cd /usr/local/src/nginx-1.10.3/ //進入到解壓目錄
[root@nginx1 nginx-1.10.3]# vim src/core/nginx.h //修改標紅處
[root@nginx1 nginx-1.10.3]# vim src/http/ngx_http_header_filter_module.c //修改標紅處,防止回顯
安裝nginx依賴包
[root@nginx1 nginx-1.10.3]# yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-deve
預編譯
[root@nginx1 nginx-1.10.3]# ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre
編譯安裝
[root@nginx1 nginx-1.10.3]# make && make install
啓動查看nginx端口
[root@nginx1 ~]# /usr/local/nginx/sbin/nginx
[root@nginx1 ~]# netstat -antup | grep 80
查看版本號,進行網頁測試
[root@nginx1 ~]# curl -I 192.168.43.31
修改 nginx運行帳號
[root@nginx1 ~]# ps -ef | grep nginx
[root@nginx1 ~]# useradd -M -s /sbin/nologin nginx //建立nginx帳號
[root@nginx1 ~]# vim /usr/local/nginx/conf/nginx.conf //修改標紅處
[root@nginx1 ~]# ln -s /usr/local/nginx/sbin/* /usr/local/bin/ //設置軟鏈接
[root@nginx1 ~]# nginx -s reload //重載nginx
[root@nginx1 ~]# ps -aux | grep nginx //查看nginx運行帳號
生成nginx啓動腳本
[root@nginx1 ~]# vim /etc/init.d/nginx
#!/bin/bash
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -3 $(cat $PIDF)
;;
restart)
$0 stop &> /dev/null
if [ $? -ne 0 ] ; then continue ; fi
$0 start
;;
reload)
kill -1 $(cat $PIDF)
;;
)
echo "Userage: $0 { start | stop | restart | reload }"
exit 1
esac
exit 0
[root@nginx1 ~]# chmod +x /etc/init.d/nginx //給腳本可執行權限
配置服務開機自啓動
[root@nginx1 ~]# chkconfig --add nginx //把腳本添加爲系統服務
[root@nginx1 ~]# chkconfig nginx on //把nginx添加爲開機自啓
[root@nginx1 ~]# chkconfig --list nginx //查看開機啓動項
部署apache(兩臺都須要)
上傳所需軟件包並解壓到指定目錄
[root@apache1 ~]# rz
[root@apache1 ~]# ls
[root@apache1 ~]# tar -zxf httpd-2.4.38.tar.gz -C /usr/local/src/
隱藏版本信息
[root@apache1 ~]# cd /usr/local/src/httpd-2.4.38/ //進入到解壓目錄
[root@apache1 httpd-2.4.38]# vim include/ap_release.h //修改標紅處
安裝apache依賴包
[root@apache1 httpd-2.4.38]# yum -y install gcc gcc-c++ apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre openssl
若是有就刪除以前的httpd
[root@apache1 httpd-2.4.38]# yum -y remove httpd
預編譯&編譯安裝
[root@apache1 httpd-2.4.38]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-ssl --enable-mpms-shared=all
[root@apache1 httpd-2.4.38]# make && make install
修改主配置文件,加快apache重啓速度
[root@apache1 httpd-2.4.38]# vim /usr/local/httpd/conf/httpd.conf //修改標紅處
設置apache啓動腳本
[root@apache1 httpd-2.4.38]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
拷貝腳本到init.d/httpd下
[root@apache1 httpd-2.4.38]# vim /etc/init.d/httpd //在第一行下添加如下內容
#chkconfig: 2345 11 88
#despriction: Web Site
[root@apache1 httpd-2.4.38]# ll /etc/init.d/httpd //查看腳本權限,若是沒有權限添加可執行權限
設置腳本開機自啓動
[root@apache1 httpd-2.4.38]# chkconfig --add httpd
[root@apache1 httpd-2.4.38]# chkconfig --list httpd //查看開機啓動項
啓動服務,設置軟鏈接
[root@apache1 httpd-2.4.38]# systemctl start httpd
[root@apache1 httpd-2.4.38]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
插卡版本號,進行訪問網頁測試
[root@apache1 httpd-2.4.38]# curl -I 192.168.43.33
修改apache運行帳號
[root@apache1 ~]# ps -axu | grep httpd
建立apache用戶
[root@apache1 ~]# useradd -M -s /sbin/nologin apache
編輯配置文件,修改默認用戶
[root@apache1 ~]# vim /usr/local/httpd/conf/httpd.conf //修改如下內容
重啓httpd服務,查看運行帳號
[root@apache1 ~]# systemctl restart httpd
[root@apache1 ~]# ps -axu | grep httpd
在apache上搭建php
上傳libmcrypt,php軟件包並解壓到指定目錄下
[root@apache1 ~]# rz
[root@apache1 ~]# ls
安裝php依賴包
[root@apache1 ~]# yum -y install php-mcrypt libmcrypt libmcrypt-devel autoconf freetype gd libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel re2c libmcrypt-devel freetype-devel libjpeg-devel bzip2-devel
[root@apache1 ~]# tar -zxf php-5.6.36.tar.gz -C /usr/local/src/
[root@apache1 ~]# tar -zxf libmcrypt-2.5.7.tar.gz
進入到libmcrypt解壓目錄下,編譯及安裝
[root@apache1 ~]# cd libmcrypt-2.5.7/
[root@apache1 libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt && make && make install
PHP預編譯
[root@apache1 libmcrypt-2.5.7]# cd /usr/local/src/php-5.6.36/
[root@apache1 php-5.6.36]# ./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/usr/local/php5.6/etc/ --with-bz2 --enable-maintainer-zts --with-apxs2=/usr/local/httpd/bin/apxs
編譯及安裝
[root@apache1 php-5.6.36]# make
[root@apache1 php-5.6.36]# make install
生成配置文件
[root@apache1 php-5.6.36]# cp php.ini-production /usr/local/php5.6/etc/php.ini
添加apache支持php模塊
[root@apache1 ~]# vim /usr/local/httpd/conf/httpd.conf
AddType application/x-httpd-php .php .phtml
建立php測試頁面,mysql鏈接頁面
[root@apache1 ~]# vim /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>
[root@apache1 ~]# vim /usr/local/httpd/htdocs/test.php
<?php
$link=mysql_connect('192.168.43.110','root','123456');
if ($link)echo "connection success......";
mysql_close();
?>
重啓httpd服務,網頁測試
[root@apache1 ~]# systemctl restart httpd
http://192.168.43.33/
Apache2和apache1配置相同
配置nginx負載均衡
修改nginx主配置文件
[root@nginx1 ~]# vim /usr/local/nginx/conf/nginx.conf //修改如下內容
注:在gzip on上面添加如下內容
upstream apache {
server 192.168.43.33 weight=1;
server 192.168.43.34 weight=1;
}
注:把47,48行註釋在下面添加兩行
proxy_pass http://apache;
proxy_redirect default;
重啓nginx服務器,,在apache編輯測試文件,訪問網頁測試
[root@apache1 ~]# vim /usr/local/httpd/htdocs/index.php
php1
[root@nginx1 ~]# nginx -s reload
http://192.168.43.31/
配置nginx動靜分離
修改nginx配置文件
[root@nginx1 ~]# vim /usr/local/nginx/conf/nginx.conf
添加以.php結尾的網頁交給apache處理的模塊
location ~ .(php)$ {
proxy_pass http://apache;
}
添加靜態緩存模塊
location ~ .*.(css|jss|ico|png|jpg|eot|svg|ttf|woff|htm|html|gif|jp eg|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {
root html ;
expires 30d;
}
[root@nginx1 ~]# nginx -s reload
測試動靜分離
在nginx服務器的網頁目錄下上傳圖片
[root@nginx1 ~]# cd /usr/local/nginx/html/
把nginx上的圖片刪掉在apache服務器的網頁目錄下上傳
[root@apache1 ~]# cd /usr/local/httpd/htdocs/
搭建discuz論壇(在apache)
上傳discuz軟件包,並解壓到指定目錄下
[root@apache1 ~]# rz
[root@apache1 ~]# unzip Discuz_7.2_FULL_SC_UTF8.zip -d /usr/local/bbs
拷貝論壇到網站根目錄下
[root@apache1 ~]# cd /usr/local/bbs/ //進入到解壓目錄
[root@apache1 bbs]# cp -r upload/ /usr/local/httpd/htdocs/bbs
修改php.ini文件
[root@apache1 bbs]# cd /usr/local/php5.6/etc/
[root@apache1 etc]# vim php.ini //編輯配置文件
給網頁目錄下的bbs777權限
[root@apache1 ~]# chmod –R 777 /usr/local/httpd/htdocs/bbs/
重啓httpd,打開網頁安裝discuz
[root@apache1 etc]# systemctl restart httpd
http://192.168.43.33/bbs/install/index.php
把apache上的/usr/local/bbs/和/ust/local/httpd/htdos/bbs傳到nginx上
[root@apache1 ~]# scp -r /usr/local/bbs/ 192.168.43.31:/usr/local/
[root@apache1 ~]# scp -r /usr/local/httpd/htdocs/bbs/ 192.168.43.31:/usr/local/nginx/html
Apache2和apache1配置相同
Nginx優化
設置nginx運行進程個數
查看cup個數
[root@nginx1 ~]# top 按數字1能夠查看到cup數量
在nginx配置文件修改cpu個數
[root@nginx1 ~]# nginx -s reload //重載nginx
查看nginx運行個數
[root@nginx1 ~]# ps -aux | grep nginx
Nginx運行cpu親和力4核4線程配置
[root@nginx1 ~]# vim /usr/local/nginx/conf/nginx.conf
設置nginx最大打開文件數
[root@nginx1 ~]# vim /usr/local/nginx/conf/nginx.conf //添加如下內容
rker_rlimit_nofile 102400;
修改系統最大打開文件數
臨時修改:
[root@nginx1 ~]# ulimit -n 102400
[root@nginx1 ~]# ulimit -n
http主體優化
開啓高效傳輸模式
[root@nginx1 ~]# vim /usr/local/nginx/conf/nginx.conf //修改配置文件
鏈接超時時間
[root@nginx1 ~]# vim /usr/local/nginx/conf/nginx.conf //添加如下內容
tcp_nodelay on;
client_header_timeout 15;
client_body_timeout 15;
send_timeout 15;
Fastcgi調優
[root@nginx1 ~]# vim /usr/local/nginx/conf/nginx.conf //在httpd標籤中添加如下內容
36 fastcgi_connect_timeout 300;
37 fastcgi_send_timeout 300;
38 fastcgi_read_timeout 300;
39 fastcgi_buffer_size 64k;
40 fastcgi_buffers 4 64k;
41 fastcgi_busy_buffers_size 128k;
42 fastcgi_temp_file_write_size 128k;
43 #fastcgi_temp_path /data/ngx_fcgi_tmp;
44 fastcgi_cache_path /data/ngx_fcgi_cache levels=2:2
45 keys_zone=ngx_fcgi_cache:512m
46 inactive=1d max_size=40g;
在server location標籤添加如下內容
77 location ~ ..(php|php5)?$
78 {
79 fastcgi_pass 127.0.0.1:9000;
80 fastcgi_index index.php;
81 include fastcgi.conf;
82 fastcgi_cache ngx_fcgi_cache;
83 fastcgi_cache_valid 200 302 1h;
84 fastcgi_cache_valid 301 1d;
85 fastcgi_cache_valid any 1m;
86 fastcgi_cache_min_uses 1;
87 fastcgi_cache_use_stale error timeout invalid_header http_500;
88 fastcgi_cache_key http://$host$request_uri;
89 }
檢測配置文件,重啓
[root@nginx1 ~]# mkdir /data
[root@nginx1 ~]# nginx -t
重啓nginx服務
[root@nginx1 ~]# systemctl restart nginx
Gzip調優
啓用gzip
[root@nginx1 ~]# vim /usr/local/nginx/conf/nginx.conf
gzip on; 開啓這一項
gzip_min_length 1k;
gzip_buffers 4 32k;
gzip_http_version 1.1;
gzip_comp_level 9;
gzip_types text/css text/xml application/javascript;
gzip_vary on;
拷貝測試文件
[root@nginx1 ~]# cp /etc/passwd /usr/local/nginx/html/passwd.html
測試
日誌切割優化
建立日誌切割腳本
[root@nginx1 ~]# cd /usr/local/nginx/logs/
[root@nginx1 logs]# vim cut_nginxlog.sh
#!/bin/bash
date=$(date +%F -d -1day)
cd /usr/local/nginx/logs
if [ ! -d cut ] ; then
mkdir cut
fi
mv access.log cut/access$(date +%F -d -1day).log
mv error.log cut/error_$(date +%F -d -1day).log
/usr/local/nginx/sbin/nginx -s reload
tar -jcvf cut/$date.tar.bz2 cut/
rm -rf cut/access && rm -rf cut/error
find -type f -mtime +10 | xargs rm –rf
給腳本添加可執行權限
[root@nginx1 logs]# chmod +x cut_nginx_log.sh
添加計劃任務
[root@nginx1 logs]# cat >>/var/spool/cron/root<<eof
00 00 /bin/sh /usr/local/nginx/logs/cut_nginx_log.sh >/dev/null 2>&1
eof
執行腳本,查看結果
[root@nginx1 logs]# sh cut_nginx_log.sh
[root@nginx1 logs]# ls /usr/local/nginx/logs/cut
去掉不須要的日誌統計
[root@nginx1 ~]# vim /usr/local/nginx/conf/nginx.conf //添加如下內容
location ~ ..(js|jpg|jpeg|JPG|JPEG|css|bmp|gif|GIF)$ {
access_log off;
}
日誌格式優化
[root@nginx1 ~]# vim /usr/local/nginx/conf/nginx.conf //去掉註釋
LVS+Keepalived負載羣集
LVS環境安裝配置(lvs1/lvs2)
安裝ipvsadm工具
[root@lvs1 ~]# yum -y install ipvsadm
[root@lvs2 ~]# yum -y install ipvsadm
Keepalived環境安裝配置
安裝keepalived
[root@lvs1 ~]# yum -y install keepalived
[root@lvs2 ~]# yum -y install keepalived
Keepalived配置
LVS1配置
[root@lvs1 ~]# cd /etc/keepalived/ #進入keepalived安裝目錄
[root@lvs1 keepalived]# cp keepalived.conf keepalived.conf.bak #備分keepalived主配置文件
[root@lvs1 keepalived]# vim keepalived.conf #修改LVS1配置文件
! Configuration File for keepalived
global_defs {
router_id LVS_01
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.43.100
}
}
virtual_server 192.168.43.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 0
protocol TCP
real_server 192.168.43.31 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.43.32 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }
}
LVS2配置
[root@lvs2 ~]# cd /etc/keepalived/ #進入keepalived安裝目錄
[root@lvs2 keepalived]# cp keepalived.conf keepalived.conf.bak #備份keepalived主配置文件
[root@lvs2 keepalived]# vim keepalived.conf #修改主配置文件
! Configuration File for keepalived
global_defs {
router_id LVS_02
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.43.100
}
}
virtual_server 192.168.43.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 0
protocol TCP
real_server 192.168.43.31 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.43.32 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }
}
啓動keepalived
[root@lvs1 ~]# systemctl start keepalived
[root@lvs2 ~]# systemctl start keepalived
查看VIP
[root@lvs1 ~]# ip addr
[root@lvs2 ~]# ip addr
測試keepalived故障轉移
[root@lvs1 ~]# systemctl stop keepalived #關閉主keepalived
[root@lvs1 ~]# ip addr #查看IP
Real server(web 服務器)綁定 VIP
在兩臺nginx服務器上作相同的配置
在迴環口綁定vip地址
[root@nginx1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.43.100
NETMASK=255.255.255.255
ONBOOT=yes
[root@nginx1 ~]# systemctl restart network
[root@nginx1 ~]# ifconfig
添加VIP本地路由,下一跳爲本身
[root@nginx1 ~]# route add -host 192.168.43.100 dev lo:0
[root@nginx1 ~]# vim /etc/rc.local #添加開機自動執行
調整ARP響應
[root@nginx1 ~]# vim /etc/sysctl.conf #修改內核文件
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@nginx1 ~]# sysctl -p #重載內核文件
測試使用VIP訪問網頁
http://192.168.43.100/
192.168.43.100
elk+kafka引入消息隊列
上傳軟件包
[root@elk ~]# rz
[root@elk ~]# lselasticsearch-6.4.2.tar.gz
elasticsearch-head-master.zip jdk-8u171-linux-x64.tar.gz kibana-6.4.2-linux-x86_64.tar.gz logstash-6.4.2.zip node-v4.9.1-linux-x64.tar.gz
安裝JDK
[root@elk ~]# tar zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/
[root@elk ~]# vim /etc/profile //配置環境變量
export JAVA_HOME=/usr/local/jdk1.8.0_171
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[root@elk ~]# source /etc/profile
[root@elk ~]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
安裝elasticsearch
[root@elk ~]# tar -zxf elasticsearch-6.4.2.tar.gz -C /usr/local/
一、因爲Elasticsearch不能用root啓用,建立一個受權用戶
二、Elasticsearch須要對系統文件的最大打開書爲65536
三、Elasticsearch要求最大線程數不低於2048
四、Elasticsearch要求虛擬內存數很多於262144
建立用戶
[root@elk ~]# useradd elk
[root@elk ~]# chown -Rf elk:elk /usr/local/elasticsearch-6.4.2
修改系統參數
[root@elk ~]# vim /etc/security/limits.conf
在文件末尾添加:
#修改最大打開文件數
啓動elasticsearch
[root@elk ~]# su elk
[elk@elk root]$ cd /usr/local/elasticsearch-6.4.2/
[elk@elk elasticsearch-6.4.2]$ vim config/elasticsearch.yml
確保下列參數被正確設置:
cluster.name: gsp # ES集羣的名字
node.name: node-1 # 該節點名
path.data: /usr/local/elasticsearch-6.4.2/data # 存放日誌數據目錄
path.logs: /usr/local/elasticsearch-6.4.2/log # elasticsearch本身的日誌目錄,以上兩個目錄必定要讓工做用戶有寫入權限
network.host: 0.0.0.0 # 支持遠程訪問
http.port: 9200 # restful api訪問接口
http.cors.enabled: true #容許ES head跨域訪問,添加
http.cors.allow-origin: "*" #容許ES head跨域訪問,添加
[elk@elk elasticsearch-6.4.2]$ vim config/jvm.options
修:
-Xms1g
-Xmx1g
改成:
-Xms256m
-Xmx256m
[elk@elk elasticsearch-6.4.2]$ mkdir -p data logs/ ////由於當前是工做用戶,因此建立的文件夾就有寫權限
[elk@elk elasticsearch-6.4.2]$ ./bin/elasticsearch &
[elk@elk elasticsearch-6.4.2]$ jps -m
1556 Elasticsearch
1594 Jps -m
測試
[elk@elk elasticsearch-6.4.2]$ curl 192.168.43.80:9200
安裝ElasticSearch-head(可略)
做爲elasticsearch的web控制檯,若要作elasticsearch羣集時極其有用
[root@elk ~]# tar -zxf node-v4.9.1-linux-x64.tar.gz -C /usr/local/
[root@elk ~]# vim /etc/profile //添加環境變量
export NODE_HOME=/usr/local/node-v4.9.1-linux-x64
PATH=$NODE_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules
export PATH
[root@elk ~]# unzip elasticsearch-head-master.zip
[root@elk ~]# cd elasticsearch-head-master
聯網並輸入:
[root@elk elasticsearch-head-master]# npm config set registry https://registry.npm.taobao.org
[root@elk elasticsearch-head-master]# npm install
[root@elk elasticsearch-head-master]# vim Gruntfile.js
若是隻是本機訪問,下面的配置修改不是必須的。若是要其餘機器訪問,則須要修改,通常來講,只要是服務器應用,都是經過遠程訪問的
安裝Logstash
[root@elk ~]# unzip logstash-6.4.2.zip -d /usr/local/
[root@elk ~]# cd /usr/local/logstash-6.4.2/config
生成配置文件:
[root@elk config]# cp logstash-sample.conf logstash.conf
[root@elk config]# vim logstash.conf
input {
file {
path => "/var/log/messages" # 收集來源,即日誌位置
start_position => "beginning" # 從哪裏開始監控,beginning表示從logstash進程開始時監控(經常使用beginning)
}
}
filter { # 日誌過濾規則
if [path] =~ "access" {
mutate { replace => { "type" => "apache_access" } }
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] # 格式化日誌時間,不然可能會出現日誌時間不對
}
}
output {
elasticsearch {
hosts => ["192.168.43.80:9200"] //IP地址是elasticsearch地址
index =>"logstash-var-massages-%{+YYYY.MM.dd}" # 索引名稱,在kibana上會搜索此索引名來顯示收集的日誌
}
stdout { codec => rubydebug } # 輸出到當前終端
}
*取消全部註釋
官方參考文檔頁:https://www.elastic.co/guide/en/logstash/current/index.html
[root@elk config]# cd .. //返回上一級目錄
[root@elk logstash-6.4.2]# nohup ./bin/logstash -f ./config/logstash.conf & //#在後臺啓動,並將輸出的信息導入nohup.out中
[root@elk logstash-6.4.2]# tail -F nohup.out
安裝kibana
解壓安裝包
[root@elk ~]# tar -zxf kibana-6.4.2-linux-x86_64.tar.gz -C /usr/local/
編譯配置文件
[root@elk ~]# cd /usr/local/kibana-6.4.2-linux-x86_64/config
[root@elk config]# vim kibana.yml
修改:
server.port: 5601 #本身的監聽端口
server.host: "192.168.43.80" # 本身的IP地址
elasticsearch.url: "http://192.168.43.30:9200" # 這裏爲elasticsearch的IP地址及其端口
啓動服務
[root@elk~]#/usr/local/kibana-6.4.2-linux-x86_64/bin/kibana &
測試
192.168.43.80:5601
在這裏能夠看到咱們在logstash上配置文件的索引名,Kibana使用的是通配符規則校驗索引名:
這裏結合官方文檔,根據實際需求自定義編輯便可:
點擊左側的Discover,能夠看到咱們收集的日誌
這一般是因爲默認的查詢時間範圍過短的緣由,能夠經過右上角的TimeRange來設置查詢的時間範圍。
到這裏,ELK的環境搭建與基本配置就完成了。
更多的配置與優化參見官方文檔https://www.elastic.co/guide/index.html
在被收集端安裝Filebeat,實現與Logstash對接
這裏收集nginx日誌,ELK+Kafka參照下文
上傳軟件包
[root@filebeat ~]# rz
解壓軟件包
[root@filebeat ~]# tar -zxf filebeat-6.4.2-linux-x86_64.tar.gz -C /usr/local/
安裝jdk
[root@filebeat ~]# tar zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/
[root@filebeat ~]# vim /etc/profile //配置環境變量
export JAVA_HOME=/usr/local/jdk1.8.0_171
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[root@filebeat ~]# source /etc/profile
[root@filebeat ~]# java -version
安裝logstash
[root@filebeat ~]# unzip logstash-6.4.2.zip -d /usr/local/
[root@filebeat ~]# cd /usr/local/logstash-6.4.2/config
生成配置文件:
[root@filebeat config]# cp logstash-sample.conf logstash.conf
[root@filebeat config]# vim logstash.conf
input {
file {
path => "/var/log/messages" # 收集來源,即日誌位置
start_position => "beginning" # 從哪裏開始監控,beginning表示從logstash進程開始時監控(經常使用beginning)
}
}
filter { # 日誌過濾規則
if [path] =~ "access" {
mutate { replace => { "type" => "apache_access" } }
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] # 格式化日誌時間,不然可能會出現日誌時間不對
}
}
output {
elasticsearch {
hosts => ["192.168.43.80:9200"]
index =>"filebeat-var-massages-%{+YYYY.MM.dd}" # 索引名稱,在kibana上會搜索此索引名來顯示收集的日誌
}
stdout { codec => rubydebug } # 輸出到當前終端
}
*取消全部註釋
官方參考文檔頁:https://www.elastic.co/guide/en/logstash/current/index.html
[root@filebeat config]# cd .. //返回上一級目錄
[root@filebeat logstash-6.4.2]# nohup ./bin/logstash -f ./config/logstash.conf & //#在後臺啓動,並將輸出的信息導入nohup.out中
[root@filebeat logstash-6.4.2]# tail -F nohup.out
編譯配置文件
[root@filebeat ~]# cd /usr/local/filebeat-6.4.2-linux-x86_64/
[root@filebeat filebeat-6.4.2-linux-x86_64]# vim filebeat.yml
修改以下內容:
scan_frequency: 60
output {
elasticsearch {
hosts => ["http://192.168.43.80:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"}
}
[root@filebeat logstash-6.4.2]# jps -m //殺死原來進程
22257 Logstash -f ./config/logstash.conf
22332 Jps -m
[root@filebeat logstash-6.4.2]# kill -9 22257
[root@filebeat logstash-6.4.2]# nohup ./bin/logstash -f ./config/nginxlog.conf &
[root@filebeat logstash-6.4.2]# tail -F nohup.out
開啓filebeat進程
[root@filebeat logstash-6.4.2]# ./filebeat -e -c filebeat.yml &
驗證
可以看到收集過來的日誌便可成功!!!
引入消息隊列ELK+kafka
安裝nginx
上傳軟件包
[root@logstash ~]# ls
[root@logstash ~]# tar -zxvf nginx-1.10.3.tar.gz -C /usr/local/src/
[root@logstash ~]# cd /usr/local/src/nginx-1.10.3/
安裝nginx依賴包
[root@logstash nginx-1.10.3]# yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel
預編譯
[root@logstash nginx-1.10.3]# ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre
編譯安裝
[root@logstash nginx-1.10.3]# make -j 4 && make install
啓動nginx
[root@logstash nginx-1.10.3]# /usr/local/nginx/sbin/nginx
查看端口號
[root@logstash nginx-1.10.3]# netstat -antup | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 24471/nginx: master
nginx上安裝logstash(安裝zookeeper+kafka)
安裝zookeeper
[root@logstash ~]# ls
kafka_2.12-2.2.0.tgz apache-zookeeper-3.5.5-bin.tar.gz
解壓安裝包
[root@logstash ~]#tar -zxf apache-zookeeper-3.5.5-bin.tar.gz -C /usr/local/
-建立快照日誌存放目錄
[root@logstash ~]# mkdir -p /data/zk/data
-建立事務日誌存放目錄
[root@logstash ~]# mkdir -p /data/zk/datalog
-生成配置文件
[root@logstash ~]# cd /usr/local/apache-zookeeper-3.5.5-bin/conf/
[root@logstash conf]# ls
configuration.xsl log4j.properties zoo_sample.cfg
[root@filebeat conf]# cp zoo_sample.cfg zoo.cfg
-修改主配置文件zoo.cfg
[root@logstash conf]# vim zoo.cfg
dataDir=/data/zk/data #修改這一行爲咱們建立的目錄
dataLogDir=/data/zk/datalog #添加這一行
-添加path環境變量
[root@logstash ~]# vim /etc/profile
export ZOOKEEPER_HOME=/usr/local/apache-zookeeper-3.5.5-bin
export PATH=$ZOOKEEPER_HOME/bin:$PATH
[root@logstash ~]# source /etc/profile
啓動zookeeper
[root@logstash ~]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
驗證
[root@logstash ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: standalone
添加開機啓動
[root@logstash ~]# echo "zkServer.sh start" >> /etc/rc.local
[root@logstash ~]# chmod +x /etc/rc.local
安裝kafka
-解壓安裝包
[root@filebeat ~]# tar -zxvf kafka_2.12-2.2.0.tgz -C /usr/local/
[root@filebeat ~]# cd /usr/local/kafka_2.12-2.2.0/
[root@filebeat kafka_2.12-2.2.0]# ls
bin config libs LICENSE NOTICE site-docs
-修改主配置文件
[root@filebeat ~]# vim /usr/local/kafka_2.12-2.2.0/config/server.properties
broker.id=0
listeners=PLAINTEXT://:9092 #開啓此項
log.dirs=/data/kafka/log #修改日誌目錄
zookeeper.connect=localhost:2181
-建立日誌目錄
[root@filebeat ~]# mkdir -p /data/kafka/log
-添加path環境變量
[root@filebeat ~]# vim /etc/profile
export KAFKA_HOME=/usr/local/kafka_2.12-2.2.0
export PATH=$KAFKA_HOME/bin:$PATH
[root@filebeat ~]# source /etc/profile
-啓動kafka
[root@filebeat ~]# kafka-server-start.sh $KAFKA_HOME/config/server.properties
-後臺啓動kafka
[root@filebeat ~]# kafka-server-start.sh -daemon /usr/local/kafka_2.12-2.2.0/config/server.properties
[root@logstash ~]# ls
安裝jdk
[root@logstash ~]#tar zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/
[root@logstash ~]# vim /etc/profile //配置環境變量
export JAVA_HOME=/usr/local/jdk1.8.0_171
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[root@logstash ~]# source /etc/profile
[root@logstash ~]# java -version
解壓軟件包
[root@logstash ~]# unzip logstash-6.4.2.zip -d /usr/local/
生成配置文件
[root@logstash ~]# cd /usr/local/logstash-6.4.2/config
[root@logstash config]# cp logstash-sample.conf logstash.conf
[root@logstash config]# cd ..
[root@logstash logstash-6.4.2]# vim config/logstash.conf
input {
file {
path => "/usr/local/nginx/logs/access.log" # nginx的log日誌存放目錄
start_position => "beginning" # 從logstash進程開啓時錄入日誌
}
}
output {
kafka {
bootstrap_servers => "192.168.43.81:9092" # 將日誌輸出到kafka上
topic_id => ["test"] # 咱們在kafka上建立的主題名字
}
}
[root@logstash logstash-6.4.2]#nohup ./bin/logstash -f ./config/logstash.conf &
[root@logstash logstash-6.4.2]# tail -F nohup.out
[root@filebeat logstash-6.4.2]# nohup ./bin/logstash -f ./config/logstash.conf &
[root@filebeat logstash-6.4.2]# tail -F nohup.out
[root@filebeat logstash-6.4.2]# jps -m
23509 Logstash -f ./config/logstash.conf
[root@filebeat ~]# cd /usr/local/bin
[root@filebeat ~]# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning //啓動消費者
訪問nginx
在kafka(被收集日誌端)配置Logstash
解壓軟件包
[root@filebeat ~]# tar -zxf kibana-6.4.2-linux-x86_64.tar.gz -C /usr/local/
生成配置文件
[root@filebeat ~]# cd /usr/local/logstash-6.4.2/config
[root@filebeat config]# vim logstash_for_kafka.conf
input {
kafka {
bootstrap_servers => "192.168.43.81:9092,192.168.43.81:9093,192.168.43.81:9094" # kafka集羣的IP及其端口,多個用逗號隔開
topics => ["test"] # 咱們在kafka建立的主題名稱
id => "GspTest" # 爲這個日誌流插入一個惟一ID,有助於監控日誌
decorate_events => true # 在輸出消息的時候會輸出自身的信息包括:消費消息的大小, topic 來源以及 consumer 的 group 信息
consumer_threads => 5 # 設置此項實現讀取日誌時負載均衡。一個partition對應一個消費者消費(一個線程),在kafka中一個進程對應一個線程,因此使用」ps -aux | grep kafka | wc -l」查看並設置此項,若是此設置比kafka的線程還多,會將多餘的線程置於閒置狀態(說白了就是給多了也沒啥事)
}
}
output {
elasticsearch {
hosts => ["192.168.43.80:9200"]
index => "logstash-kafka-%{+YYYY.MM.dd}"
}
}
[root@filebeatconfig]# cd ..
[root@filebeat logstash-6.4.2]# nohup ./bin/logstash -f ./config/logstash_for_kafka.conf &
[root@filebeat logstash-6.4.2]# tail -F nohup.out
[root@filebeat logstash-6.4.2]# jps -m
24032 Logstash -f ./config/logstash_for_kafka.conf
24445 Jps -m
測試
屢次訪問nginx,而後訪問kibana,192.168.43.80:5601
Zabbix
IP地址 主機名 角色
192.168.43.20 Zabbix-server Zabbix-server
192.168.43.21 Zabbix-web Zabbix-web
創建時間同步環境,在zabbix-server上搭建時間同步服務器
安裝NTP(關閉防火牆/selinux)
[root@zabbix-server ~]#yum -y install ntp
配置NTP
[root@zabbix-server~]#vim /etc/ntp.conf
server 127.127.1.0 #本地時間供給源
fudge 127.127.1.0 stratum 8 #設置時區爲+08區
重啓服務並設置爲開機啓動
[root@zabbix-server ~]#systemctl start ntpd
[root@zabbix-server ~]#systemctl enable ntpd
在其餘服務器上進行時間同步(關閉防火牆/selinux)
[root@mha-master ~]#yum -y install ntpdate
[root@zabbix-server ~]#ntpdate 192.168.43.20 //地址寫你本身的時間服務器
建立zabbix數據庫和受權用戶:
受權
[root@zabbix-server ~]# scp zabbix-3.2.6.tar.gz 192.168.43.110:/root
[root@zabbix-server ~]# ssh 192.168.43.110
[root@mha-master ~]# mysql -uroot -p123456
------------------------------------>
CREATE DATABASE zabbix;
GRANT ALL ON zabbix. TO 'zabbix'@'192.168.43.%' IDENTIFIED BY '123456';
GRANT ALL ON zabbix. TO 'zabbix'@'localhost' IDENTIFIED BY '123456';
GRANT ALL ON zabbix.* TO 'zabbix'@'mha-master' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
導入數據庫文件:
下載地址
[root@mha-master ~]# wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.6/zabbix-3.2.6.tar.gz/download
也能夠下載後上傳
導入數據庫
[root@mha-master ~]# tar xf zabbix-3.2.6.tar.gz -C /usr/local/src/
[root@mha-master ~]# cd /usr/local/src/zabbix-3.2.6/database/mysql/
[root@mha-master mysql~]# mysql -uzabbix -p123456 zabbix < schema.sql
[root@mha-master mysql~]#mysql -uzabbix -p123456 zabbix < images.sql
[root@mha-master mysql~]#mysql -uzabbix -p123456 zabbix < data.sql
#導入順序不能錯
安裝Zabbix-Server服務器
在zabbix-server上編譯安裝zabbix:
安裝依賴包
[root@zabbix-server ~]#yum -y install mysql-devel libxml2-devel net-snmp-devel libcurl-devel gcc
[root@zabbix-server ~]#tar xf zabbix-3.2.6.tar.gz -C /usr/local/src/
[root@zabbix-server ~]#cd /usr/local/src/zabbix-3.2.6/
建立用戶:
[root@zabbix-server zabbix-3.2.6~]#useradd -s /sbin/nologin zabbix
建立目錄:
[root@zabbix-server zabbix-3.2.6~]#mkdir -p /data/zabbix/logs
給予權限:
[root@zabbix-server zabbix-3.2.6~]#chown -R zabbix:zabbix /data/zabbix/logs/
預編譯
[root@zabbix-server zabbix-3.2.6~]#./configure --prefix=/usr/local/zabbix --enable-server --with-mysql --with-net-snmp --with-libcurl --with-libxml2
安裝
[root@zabbix-server zabbix-3.2.6~]# make install
編輯配置文件並啓動:
[root@zabbix-server ~]# cd /usr/local/zabbix/etc/
[root@zabbix-server etc~]#cp zabbix_server.conf zabbix_server.conf.bak
[root@zabbix-server etc~]#vim /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/data/zabbix/logs/zabbix_server.log
DBHost=192.168.43.110 #數據庫的地址,取消註釋
DBName=zabbix #數據庫的名
DBUser=zabbix #數據庫的用戶
DBPassword=123456 #數據庫用戶的密碼(添加,或者取消註釋)
ListenIP=127.0.0.1,192.168.43.20啓動服務端
[root@zabbix-server etc~]#/usr/local/zabbix/sbin/zabbix_server
查看監聽端口’
[root@zabbix-server ~]# netstat -anput |grep zabbix_server
設置啓動腳本
[root@zabbix-server etc]# cd /usr/local/src/zabbix-3.2.6/
[root@zabbix-server etc]# cp misc/init.d/tru64/zabbix_server /etc/init.d/
[root@zabbix-server etc]# chmod +x /etc/init.d/zabbix_server
作軟鏈接
[root@zabbix-server etc]# ln -s /usr/local/zabbix/sbin/ /usr/local/sbin/
[root@zabbix-server etc]# ln -s /usr/local/zabbix/bin/ /usr/local/bin/
設置自啓動
[root@zabbix-server etc]# vim /etc/rc.d/init.d/zabbix_server
#在第二行添加以下內容
#chkconfig: 2345 10 90
#description: zabbix server
注:
此例中, 在chkconfig後面的數字345表示是默認運行的級別. 在這個例子中, 此服務將會在級別3 , 4, 5啓動.
數字10表明啓動的優先級別. 數字越低,優先級越高. 數字90表明關閉的優先級別. 數字越低,優先級越高.
保存後退出,並執行
[root@zabbix-server etc]#chkconfig --add zabbix_server
[root@zabbix-server etc]#chkconfig zabbix_server on
[root@zabbix-server etc]#service zabbix_server restart
安裝Zabbix-Web服務器(編譯安裝nginx)
在Zabbix-Web主機上安裝nginx和php:
Nginx安裝及優化
上傳軟件包並解壓
[root@zabbix-web~]# ls
anaconda-ks.cfg nginx-1.10.3.tar.gz
[root@zabbix-web~]# tar -zxvf nginx-1.10.3.tar.gz -C /usr/local/src/
更改源碼隱藏軟件名稱和版本號
[root@zabbix-web~]# cd /usr/local/src/nginx-1.10.3/
[root@zabbix-webnginx-1.10.3]# vim src/core/nginx.h #修改標紅部分
13 #define NGINX_VERSION "8.8.8" #修改版本號
14 #define NGINX_VER "web/" NGINX_VERSION #修改服務器名稱
[root@zabbix-webnginx-1.10.3]# vim src/http/ngx_http_header_filter_module.c
49 static char ngx_http_server_string[] = "Server: web" CRLF; #修改標紅部分
#修改HTTP頭信息中的connection字段,防止回顯具體版本號
拓展:通用http頭域
通用頭域包含請求和響應消息都支持的頭域,通用頭域包含Cache-Control(緩存控制)、 Connection(鏈接)、Date(日期)、Pragma(短語)、Transfer-Encoding(傳輸編碼)、Upgrade(升級)、Via。對通用頭域的擴展要求通信雙方都支持此擴展,若是存在不支持的通用頭域,通常將會做爲實體頭域處理。那麼也就是說有部分設備,或者是軟件,能獲取到connection,部分不能,要隱藏就要完全!
[root@zabbix-webnginx-1.10.3]# vim src/http/ngx_http_special_response.c
#這個文件定義了http錯誤碼的返回,有時候咱們頁面程序出現錯誤,Nginx會代咱們返回相應的錯誤代碼,回顯的時候,會帶上nginx和版本號,咱們把他隱藏起來.(防止網頁出錯時顯示版本號)
22 "<hr><center>" NGINX_VER "</center>" CRLF #老版本這裏須要修改成web,如今這裏不須要修改,由於它調用了NGINX_VER變量
安裝nginx依賴包
[root@zabbix-webnginx-1.10.3]# yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel
預編譯
[root@zabbix-webnginx-1.10.3]# ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre
--with-http_dav_module #啓用支持(增長PUT,DELETE,MKCOL:建立集合,COPY和MOVE方法)
默認關閉,須要編譯開啓
--with-http_stub_status_module #啓用支持(獲取Nginx上次啓動以來的工做狀態)
--with-http_addition_module #啓用支持(做爲一個輸出過濾器,支持不徹底緩衝,分部分相應請求)
--with-http_sub_module #啓用支持(容許一些其餘文本替換Nginx相應中的一些文本)
--with-http_flv_module #啓用支持(提供支持flv視頻文件支持)
--with-http_mp4_module #啓用支持(提供支持mp4視頻文件支持,提供僞流媒體服務端支持)
--with-pcre #須要注意,這裏指的是源碼,用#./configure --help |grep pcre查看幫助,若是源碼編譯pcre,須要經過--with-pcre=編譯安裝pcre路徑
編譯安裝
[root@zabbix-webnginx-1.10.3]# make -j 4 && make install
啓動nginx
[root@zabbix-web~]# /usr/local/nginx/sbin/nginx
查看端口號
[root@zabbix-web~]# netstat -antup | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0: LISTEN 7423/nginx: master
測試
[root@zabbix-web~]# curl -I 192.168.43.21
HTTP/1.1 200 OK
Server: web/8.8.8
Date: Wed, 03 Jul 2019 08:34:09 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Wed, 03 Jul 2019 08:31:22 GMT
Connection: keep-alive
ETag: "5d1c67da-264"
Accept-Ranges: bytes
網站測試
http://192.168.43.21/
查看nginx當前運行帳號
[root@zabbix-web~]# ps -aux | grep nginx #默認是nobody用戶
建立nginx帳號
[root@zabbix-web~]# useradd -M -s /sbin/nologin nginx
修改nginx運行帳號
[root@zabbix-web~]# vim /usr/local/nginx/conf/nginx.conf
改:
#user nobody;
爲:
user nginx;
添加path變量
[root@zabbix-web~]# ln -s /usr/local/nginx/sbin/ /usr/local/bin/
重載nginx
[root@zabbix-web~]# nginx -s reload
查看運行帳號
[root@zabbix-web~]# ps -aux | grep nginx
在這裏咱們還能夠看到在查看的時候,work進程是nginx用戶了,可是master進程仍是root
其中,master是監控進程,也叫主進程,work是工做進程.
因此咱們能夠master監控進程使用root,能夠是降級使用普通用戶,若是都是用普用戶,那麼編譯安裝的時候,是用普通用戶執行,sudo方式操做!能夠直接理解爲master是管理員,work進程纔是爲用戶提供服務的!
生成服務啓動腳本
[root@zabbix-web~]# vim /etc/init.d/nginx
#!/bin/bash
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -3 $(cat $PIDF)
;;
restart)
$0 stop &> /dev/null
if [ $? -ne 0 ] ; then continue ; fi
$0 start
;;
reload)
kill -1 $(cat $PIDF)
;;
*)
echo "Userage: $0 { start | stop | restart | reload }"
exit 1
esac
exit 0
配置服務開機自動啓動
[root@zabbix-web~]# chmod +x /etc/init.d/nginx #給腳本添加可執行權限
[root@zabbix-web~]# chkconfig --add nginx #把nginx添加爲系統服務
[root@zabbix-web~]# chkconfig nginx on #把nginx添加開機自啓動
[root@zabbix-web~]# chkconfig --list nginx #查看nginx開機啓動項
php安裝
在Nginx中,咱們使用的是php-fpm來對php頁面解析,PHP-FPM實際上是PHP源代碼的一個補丁,指在將FastCGI進程管理整合進PHP包中。必須將它patch到你的PHP源代碼中,再編譯安裝PHP後纔可使用。
從PHP5.3.3開始,PHP中直接整合了PHP-FPM,因此從PHP5.3.3版本之後,不須要下載PHP-FPM補丁包了,下面是PHP-FPM官方發出來的通知:
http:#php-fpm.org/download
安裝依賴:
[root@zabbix-web ~]# yum -y install php-mcrypt libmcrypt libmcrypt-devel autoconf freetype gd libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel re2c bzip2-devel libmcrypt-devel freetype-devel libjpeg-devel
安裝libmcrypt
[root@zabbix-web ~]# ls
anaconda-ks.cfg libmcrypt-2.5.7.tar.gz nginx-1.10.3.tar.gz php-5.6.36.tar.gz
[root@zabbix-web ~]# tar zxf libmcrypt-2.5.7.tar.gz
[root@zabbix-web ~]# cd libmcrypt-2.5.7/
[root@zabbix-web libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt && make && make install
解壓PHP包
[root@zabbix-web ~]# tar -zxvf php-5.6.36.tar.gz -C /usr/local/src/
預編譯
[root@zabbix-web ~]# cd /usr/local/src/php-5.6.36/
[root@zabbix-web php-5.6.36]# ./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/usr/local/php5.6/etc/ --with-bz2 --enable-maintainer-zts --with-png-dir --with-freetype-dir --with-jpeg-dir --with-gd --enable-bcmath --with-gettext
參數選項
Php配置選項中文手冊
http://php.net/manual/zh/configure.about.php
相關選項的解釋:
--prefix=/usr/local/php5.6 //安裝位置
--with-mysql=mysqlnd //支持mysql
--with-pdo-mysql=mysqlnd //支持pdo模塊
--with-mysqli=mysqlnd //支持mysqli模塊
注:上面的三選項的做用:數據庫與php不在一個服務器上,指定此種方式,安裝數據庫鏈接驅動
--with-apxs2 #將php編譯爲Apache的一個模塊進行使用
--enable-mbstring #多字節字符串的支持
--with-curl #支持cURL
--with-gd #支持gd庫
--enable-fpm #支持構建fpm
--with-config-file-path #設置配置文件路徑
--with-openssl #支持openssl模塊
--enable-fpm #支持fpm模式
--enable-sockets #啓用socket支持
--enable-sysvshm #啓用系統共享內存支持
--enable-mbstring #多字節字串、像咱們的中文就是多字節字串
--with-freetype-dir #支持freetype、就要裝freetype-devel、跟字體相關的、字體解析工具
--with-jpeg-dir
--with-png-dir
注:上面的二選項的做用:處理jpeg、png圖片的、php能夠動態生成jpeg圖片
--with-zlib #是個壓縮庫、在互聯網傳輸時用來壓縮傳輸的
--with-libxml-dir=/usr #這個libxml是用來解析xml的、指定/usr下
--enable-xml #支持xml的
--with-mhash #支持mhash
--with-mcrypt=/usr/local/libmcrypt #libmcrypt-devel這個程序包所指定的
--with-config-file-path=/usr/local/php5.6/etc #指定配置文件的存放路徑的
--with-config-file-scan-dir=/etc/php.d #配置文件掃描路徑
--with-bz2 #支持BZip2
若是使用PHP5.3以上版本,爲了連接MySQL數據庫,能夠指定mysqlnd,這樣在本機就不須要先安裝MySQL或MySQL開發包了。mysqlnd從php 5.3開始可用,能夠編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定造成依賴),但從PHP 5.4開始它就是默認設置了。
編譯
輸入top,而後按1,便可看到本身是幾核
[root@zabbix-web php-5.6.36]# make -j 4 #作實驗時能夠多指定幾個內核加速安裝
安裝
[root@zabbix-web php-5.6.36]# make install
修改fpm配置php-fpm.conf.default文件名稱
[root@zabbix-web ~]# cd /usr/local/php5.6/etc/
[root@zabbix-web etc]# cp php-fpm.conf.default php-fpm.conf
修改默認運行帳號
修改默認運行用戶,組爲nginx
[root@zabbix-web etc]# vim php-fpm.conf
user = nginx
group = nginx
生成php.ini配置文件
[root@zabbix-web ~]# cp /usr/local/src/php-5.6.36/php.ini-production /usr/local/php5.6/etc/php.ini
複製php-fpm啓動腳本到init.d
[root@zabbix-web ~]# cp /usr/local/src/php-5.6.36/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
賦予執行權限
[root@zabbix-web ~]# chmod +x /etc/init.d/php-fpm
添加開機啓動
[root@zabbix-web ~]# chkconfig --add php-fpm
[root@zabbix-web ~]# chkconfig php-fpm on
啓動服務
[root@zabbix-web ~]# /etc/init.d/php-fpm start
Starting php-fpm done
查看端口監聽狀態
[root@zabbix-web ~]# netstat -antpu | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0: LISTEN 7767/php-fpm: maste
配置nginx支持index.php
修改配置文件
[root@zabbix-web ~]# vim /usr/local/nginx/conf/nginx.conf
#添加如下紅色部分
location / {
root html;
index index.php index.html index.htm; #添加index.php
}
#取消下面的註釋,注意修改路徑
location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
#寫網站根目錄
建立測試頁面
[root@zabbix-web ~]# vim /usr/local/nginx/html/index.php #php測試頁面
<?php
phpinfo();
?>
[root@zabbix-web ~]# vim /usr/local/nginx/html/test.php #測試mysql鏈接頁面
<?php
$link=mysql_connect('192.168.43.110','test','123456');
if ($link)echo "connection success......";
mysql_close();
?>
[root@localhost ~]# nginx -t
[root@localhost ~]# nginx -s reload
在數據庫中建立mysql測試帳號
恢復192.168.1.12爲源碼安裝mysql快照,建立受權test帳號
[root@mha-master ~]# mysql -uroot -p123456
mysql> grant all on . to test@'%' identified by '123456';
mysql> flush privileges;
mysql> show grants for test; #查看一下test用戶受權
測試
http://192.168.43.21/
取消受權
mysql> revoke all on .* from 'test'@'%'; #取消受權
mysql> show grants for test;
配置zabbix的web頁面
[root@zabbix-web ~]# wget wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.6/zabbix-3.2.6.tar.gz/download #本次已經下載了,上傳便可
[root@zabbix-web ~]# tar xf zabbix-3.2.6.tar.gz -C /usr/local/src/
[root@zabbix-web ~]# mkdir /usr/local/nginx/html/zabbix/
[root@zabbix-web ~]# cd /usr/local/src/zabbix-3.2.6/frontends/php/
[root@zabbix-web php]# cp -a . /usr/local/nginx/html/zabbix/
查看當前系統時區
[root@zabbix-web php]# timedatectl
修改配置文件,以支持zabbix
[root@zabbix-web ~]# vim /usr/local/php5.6/etc/php.ini
date.timezone = Asia/Shanghai
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
always_populate_raw_post_data = -1
[root@zabbix-web php]# /etc/init.d/php-fpm restart
安裝zabbix
用瀏覽器訪問http://192.168.43.21/zabbix,並按照提示安裝:
都ok才能夠繼續向下作
指定zabbix-server 若是指定錯了能夠在/usr/local/nginx/html/zabbix/conf/zabbix.conf.php 配置文件中修改
若是想從新指定數據庫和nginx的地址,能夠在配置文件中指定
vim /usr/local/nginx/html/zabbix/conf/zabbix.conf.php //手動寫入配置
<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '192.168.43.88';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = '123456';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = '192.168.43.90';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
?>
Zabbix用戶管理
修改密碼
修改密碼爲123456,並改語言爲中文
建立用戶
點擊添加能夠加入到相應的羣組
上傳simkai.ttf包,解決Zabbix中文亂碼 上傳simkai.ttf包
[root@zabbix-web ~]#cp simkai.ttf /usr/local/nginx/html/zabbix/fonts
[root@zabbix-web ~]# ls /usr/local/nginx/html/zabbix/fonts
[root@zabbix-web ~]# vim /usr/local/nginx/html/zabbix/include/defines.inc.php
define('ZBX_FONT_NAME', 'simkai'); (修改)
[root@zabbix-web ~]# nginx -s reload
安裝Zabbix-Agent端
在mha-slave1主機上安裝:
拷貝文件
[root@zabbix-server ~]# scp zabbix-3.2.6.tar.gz 192.168.43.12:/root #拷貝文件
[root@zabbix-server ~]# ssh 192.168.43.12
在客戶端服務器安裝GCC
[root@mha-slave1 ~]# yum install -y gcc
同步時間
[root@mha-slave1 ~]# yum -y install ntpdate #同步時間
[root@mha-slave1 ~]# ntpdate 192.168.43.20
安裝zabbix-agent
#或者直接上傳zabbix-3.2.6.tar.gz
[root@mha-slave1 ~]# tar xf zabbix-3.2.6.tar.gz -C /usr/local/src/
[root@mha-slave1 ~]# cd /usr/local/src/zabbix-3.2.6/
[root@mha-slave1 zabbix-3.2.6~]# groupadd zabbix-agent
[root@mha-slave1 zabbix-3.2.6~]#useradd -g zabbix-agent zabbix-agent -s /sbin/nologin
[root@mha-slave1 zabbix-3.2.6~]#./configure --prefix=/usr/local/zabbix-agent --enable-agent
[root@mha-slave1 zabbix-3.2.6~]#make install
編輯配置文件:
[root@mha-slave1 zabbix-3.2.6~]#mkdir -p /data/zabbix/logs/
[root@mha-slave1 zabbix-3.2.6~]#chown -R zabbix-agent:zabbix-agent /data/zabbix/
[root@mha-slave1 zabbix-3.2.6~]#vim /usr/local/zabbix-agent/etc/zabbix_agentd.conf
LogFile=/data/zabbix/logs/zabbix_agentd.log
Server=192.168.43.20 #zabbix-server的地址,客戶端被動等待zabbix-server收集數據
ServerActive=192.168.43.20 #客戶端主動將數據發給zabbix-server
Hostname=192.168.43.12 #本身的ip
User=zabbix-agent #修改程序的運行用戶
UnsafeUserParameters=1 #容許自定義鍵
或着使用sed命令修改
[root@mha-slave1 ~]#sed -i 's:LogFile=/tmp/zabbix_agentd.log:LogFile=/data/zabbix/logs/zabbix_agentd.log:g' /usr/local/zabbix-agent/etc/zabbix_agentd.conf
[root@mha-slave1 ~]#sed -i 's/Server=127.0.0.1/Server=192.168.43.20/g' /usr/local/zabbix-agent/etc/zabbix_agentd.conf
[root@mha-slave1 ~]#sed -i 's/ServerActive=127.0.0.1/ServerActive=192.168.43.20/g' /usr/local/zabbix-agent/etc/zabbix_agentd.conf
[root@mha-slave1 ~]#sed -i 's/Hostname=Zabbix server/Hostname=192.168.43.12/' /usr/local/zabbix-agent/etc/zabbix_agentd.conf
[root@mha-slave1 ~]#sed -i 's/# User=zabbix/User=zabbix-agent/g' /usr/local/zabbix-agent/etc/zabbix_agentd.conf
[root@mha-slave1 ~]#sed -i 's/# UnsafeUserParameters=0/UnsafeUserParameters=1/g' /usr/local/zabbix-agent/etc/zabbix_agentd.conf
設置爲系統服務,添加軟鏈接
[root@mha-slave1~]#cd /usr/local/src/zabbix-3.2.6/
[root@mha-slave1 zabbix-3.2.6~]#cp misc/init.d/tru64/zabbix_agentd /etc/init.d/
[root@mha-slave1 zabbix-3.2.6~]#chmod +x /etc/init.d/zabbix_agentd
[root@mha-slave1 zabbix-3.2.6~]#ln -s /usr/local/zabbix-agent/sbin/ /usr/local/sbin/
[root@mha-slave1 zabbix-3.2.6~]#ln -s /usr/local/zabbix-agent/bin/ /usr/local/bin/
設置自啓動
[root@mha-slave1 zabbix-3.2.6~]#vim /etc/init.d/zabbix_agentd
#在第二行添加以下內容
#chkconfig: 2345 10 90
#description: zabbix agentd
加入到系統服務而且開機啓動
[root@mha-slave1 zabbix-3.2.6~]chkconfig --add zabbix_agentd
[root@mha-slave1 zabbix-3.2.6~]chkconfig zabbix_agentd on
[root@mha-slave1 zabbix-3.2.6~]service zabbix_agentd restart
添加羣組和主機
若是有多臺mysql須要監控,能夠向創建一個mysql羣組,而後建立mysql主機,加入到mysql羣組中,若是隻有一臺主機就不須要建立羣組了
建立羣組
建立mysql羣組,還能夠選擇其餘羣組,爲mysql羣組指定模板
添加主機
添加模板
查看圖形
監控指定端口
Zabbix 監控指定端口(好比mysql端口)
2018年10月14日 14:46:50 肓己 閱讀數 1454
版權聲明:本文爲博主原創文章,未經博主容許不得轉載。 http://www.javashuo.com/article/p-qdpicqam-dk.html
前言
實現監控指定端口是否被監聽效果,保證服務的正常運行。
步驟
建立一個模板
建立一個監控mysql端口的模板
指定模板的名稱(不能使用中文),應用模板的羣組
配置---模板---建立監控項
建立監控項
配置——主機——(選擇主機)——監控項——建立監控項
填入監控項名稱,選擇類型(注意默認類型是Zabbix 客戶端,若是是主動監控的須要選擇Zabbix 客戶端主動式),選擇鍵值,鍵值選擇後填入須要監控的端口,能夠起一個新的應用集Port listen,最後點擊添加:
觸發器設置
添加觸發器
添加觸發器建立觸發器,填入觸發器名稱,設置嚴重性,而後點擊填寫表達式,選擇剛剛建立的監控項,點擊插入。最後點擊添加即建立完成觸發器。
將模板應用到主機
查看最新數據
查看最新數據能夠看到該監控狀態爲1,即該端口在監聽狀態。
查看報警
瀏覽最新數據,能夠看到該監控狀態爲0,即該端口不在監聽狀態。
開啓mysql
狀態恢復:
DNS部署
主DNS部署
實驗環境
安裝所需軟件包
[root@dns1 ~]# yum -y install bind*
編輯DNS的主配置文件
[root@dns1 ~]# vim /etc/named.conf //修改
options {
listen-on port 53 { any; }; //容許全部地址訪問端口
listen-on-v6 port 53 { ::1; };
directory "/var/named"; //區域數據文件的默認存放位置
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt"; //指定緩存數據統計文件位置
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; }; 容許全部網段訪問
編輯區域配置
[root@dns1 ~]# vim /etc/named.rfc1912.zones //最下面添加
1.編輯正向解析區域
zone "qingniao.com" in { #網站域名
type master; #主類型的DNS
file "qingniao.com.zone"; #文件名
allow-transfer { 192.168.43.51; }; #從DNS地址
};
2.編輯反向解析區域
zone "43.168.192.in-addr.arpa" in { #反向IP地址
type master; #主類型
file "192.168.43.arpa"; #文件名
};
配置主區域正向數據文件
[root@dns1 ~]# vim /var/named/qingniao.com.zone
:r /var/named/named.localhost //在命令末行模式下輸入調用模板
$TTL 1D
@ IN SOA qingniao.com. admin.qingniao.com. ( 2019071917
1D
1H
1W
3H );
IN NS dns1.qingniao.com.
IN NS dns2.qingniao.com.
dns1 IN A 192.168.43.50
dns2 IN A 192.168.43.51
discuz IN A 192.168.43.100
zabbix IN A 192.168.43.20
elk IN A 192.168.43.80
編輯反向區域解析文件
[root@dns1 ~]# vim /var/named/192.168.43.arpa
$TTL 1D
@ IN SOA qingniao.com. admin.qingniao.com. ( 2019071917
1D
1H
1W
3H );
IN NS dns1.qingniao.com.
IN NS dns2.qingniao.com.
50 IN PTR dns1.qingniao.com.
51 IN PTR dns2.qingniao.com.
100 IN PTR discuz.qingniao.com.
20 IN PTR zabbix.qingniao.com.
80 IN PTR elk.qingniao.com.
檢查配置文件
[root@dns1 ~]# named-checkconf -z /etc/named.conf
啓動named
[root@dns1 ~]# systemctl start named
驗證正反DNS解析
從DNS部署
安裝所需軟件包
[root@dns2 ~]# yum -y install bind*
編寫主配置文件
[root@dns2 ~]# vim /etc/named.conf //修改
options {
listen-on port 53 { any; }; //容許全部地址訪問端口
listen-on-v6 port 53 { ::1; };
directory "/var/named"; //區域數據文件的默認存放位置
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt"; //指定緩存數據統計文件位置
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; }; 容許全部網段訪問
編寫區域文件
[root@dns2 ~]# vim /etc/named.rfc1912.zones
1.編寫正向區域解析文件
zone "qingniao.com" in {
type slave; #類型要修改成從類型
masters { 192.168.43.50; }; #指定主的IP地址 file "slaves/qingniao.com.zone"; #在slaves下自動同步lijinming.com.zone文件
};
2.編寫反向區域
zone "43.168.192.in-addr.arpa" in {
type slave; #類型修改成從類型
masters { 192.168.43.50; }; #指定主DNS的IP地址
file "slaves/192.168.43.arpa"; #slaves文件夾下自動同步主DNS的反向文件
};
啓動服務
[root@dns2 ~]# systemctl restart named
修改想要訪問的DNS
[root@dns2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
想要訪問的添加在第一條
[root@dns2 ~]# systemctl restart network
查看slaves文件夾是否同步區域文件
[root@dns2 ~]# cd /var/named/
[root@dns2 named]# ls
[root@dns2 named]# ls slaves/
驗證