Nginx
Nginx (“engine x”) 是一個高性能的HTTP和反向代理服務器,特點是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。
Nginx功能
- 反向代理
正向代理: 最簡單直接的例子就是翻牆,用一個能夠訪問外網的服務器代理你的訪問操作,簡介達到訪問外網的目的,代理的是用戶
反向代理:反向代理則是用戶訪問一臺服務器中的業務,根據不同的業務,如下單,支付,收藏都會由用戶操作,而用戶訪問的服務器跳轉到對應的業務服務器,反向代理,服務器代理的是業務集羣。
- 負載均衡:將用戶平衡分配到集羣,類似數據傾斜解決
負載均衡策略: 輪詢:一個一個的來
權重:那個機器牛逼,權重高,則分配多任務
備機:替補,平時不幹事,宕機或者數據量大啓用,與權重和輪詢不衝突。
3. 動靜分離:將靜態的數據(如不需要進行JVM操作)放在Nginx機器,直接在本地查找返回。
分發Jar包
安裝Nginx
- yum安裝依賴包
sudo yum -y install openssl openssl-devel pcre pcre-devel zlib zlib-devel gcc gcc-c++
2. 上傳解壓
3. 安裝依賴包
進入解壓縮目錄,執行
./configure --prefix=/opt/module/nginx
編譯加安裝
make && make install
賦予權限
nginx佔用80端口,默認情況下非root用戶不允許使用1024以下端口
sudo setcap cap_net_bind_service=+eip /opt/module/nginx/sbin/nginx
啓動命令: 在/usr/local/nginx/sbin目錄下執行 ./nginx
關閉命令: 在/usr/local/nginx/sbin目錄下執行 ./nginx -s stop
重新加載命令: 在/usr/local/nginx/sbin目錄下執行 ./nginx -s reload
查看進程:ps -ef | grep nginx
頁面查看
默認80端口可以不用寫
修改配置文件
修改conf目錄下的nginx.conf文件
// 代理地址,logservers是自己起的名字
proxy_pass http://logservers;
// 等待連接爲10s
proxy_connect_timeout 10; 10;
// 解釋logservers是什麼東西,weght是權重,可以不加省略爲輪詢
upstream logservers{
server hadoop102:8080 weight=1;
server hadoop103:8080 weight=1;
server hadoop104:8080 weight=1;
}
重啓查看
sbin/nginx -s reload
已經訪問到了某臺服務器的tomcat,所以會報404
編寫腳本
#!/bin/bash
# spark-gmall-nginx-cluster-logger
# spark實時項目用nginx啓動日誌集羣進行收集日誌
JAVA_BIN=/opt/module/jdk1.8.0_152/bin/java
# log文件存儲位置
PROJECT=spark-log
# 收集日誌jar
APPNAME=demo-0.0.1-SNAPSHOT.jar
# 端口
SERVER_PORT=8080
case $1 in
"start")
{
for i in hadoop1 hadoop2 hadoop3
do
echo "========: $i==============="
ssh $i "$JAVA_BIN -Xms32m -Xmx64m -jar /applog/$PROJECT/$APPNAME --server.port=$SERVER_PORT >/dev/null 2>&1 &"
done
echo "========NGINX==============="
/opt/module/nginx/sbin/nginx
};;
"stop")
{
echo "======== NGINX==============="
/opt/module/nginx/sbin/nginx -s stop
for i in hadoop1 hadoop2 hadoop3
do
echo "========: $i==============="
ssh $i "ps -ef|grep $APPNAME |grep -v grep|awk '{print \$2}'|xargs kill" >/dev/null 2>&1
done
};;
esac