linux使用nginx負載dns

環境介紹:
centos7上搭建的dnsmasq服務,這是一款小巧的dns服務,配置簡單,容易上手;
編譯安裝 nginx ,因爲要負載udp,1.9以下的版本是不支持的,此處使用的是nginx-1.10的版本;

利用nginx進行web的負載均衡很是方便,nginx也是可以進行udp的負載均衡的;比如可以使用nginx負載dns服務;

搭建環境:

172.22.10.237 ---centos7搭建dnsmasq服務;

172.22.10.50 ---centos7搭建dnsmasq服務;

172.22.10.156 ---centos7編譯安裝nginx;

dnsmasq就不多說了,這是一款小巧且配置方便的dns服務;適用於小型的局域網;

換成其他的dns服務也可以,這裏只講解nginx的負載方法和配置;

整體的架構如下圖:

下載nginx安裝包(版本要大於1.9),上傳至172.22.10.156;我的放到了/usr/local/src/nginx-1.10.3.tar.gz,
//首先安裝編譯工具、依賴包

yum -y install gcc gcc-c++ autoconf automake
yum -y install zlib zlib-devel openssl openssl-devel pcre-devel

 //解壓nginx

tar xzvf nginx-1.10.3.tar.gz

進入nginx目錄並查看

cd nginx-1.10.3 && ls

有的nginx版本本身就大於1.9,但是爲什麼不能做到udp負載?可能是沒編譯所需要的模塊

//查看nginx可以編譯的模塊;

./configure --help

其中有一個stream的模塊,

 

//預編譯

./configure --with-stream

//make編譯

make

//安裝

make install

 此時,nginx就會安裝到默認目錄: /usr/local/nginx 下了;

 /usr/local/nginx/conf/nginx.conf 就是nginx的主配置文件了;

vim編輯  /usr/local/nginx/conf/nginx.conf  將裏面的內容修改成:

#user  nobody;
worker_processes 4;
events {
worker_connections 1024;
}
stream {
upstream dns {
server 172.22.10.237:53 weight=1;
server 172.22.10.50:53 weight=1;
}
server {
listen 53 udp;
proxy_connect_timeout 1s;
proxy_timeout 20s;
proxy_pass dns;
}

保存退出執行:

/usr/local/nginx/sbin/nginx -t

檢查配置;

這個時候就可以啓動nginx了:

/usr/local/nginx/sbin/nginx

爲了排除其他影響,建議將防火牆和selinux先關掉;

172.22.10.237和172.22.10.50的防火牆也關掉,這樣nginx才能訪問並分發udp;

 測試:
    在172.22.10.237 DNS配置文件中配置一個域名解析:172.22.10.110    www.xxx.com
    在172.22.10.50 DNS配置文件中配置一個域名解析:172.22.10.110    www.ppp.com

重啓dns服務,讓配置生效;

將客戶端的dns該爲 172.22.10.156 ,使用 nslookup 對172.22.10.110這個ip進行解析,

你會發現,解析的結果會在 www.xxx.com 和 www.ppp.com 中來回變動,這就是nginx按照權重分配的結果了

upstream dns {
    server 172.22.10.237:53 weight=1;
    server 172.22.10.50:53 weight=1;
}

weight = 1 ; 就是權重數值了;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章