方案正文
當前,天(tian)翼云DCS的(de)Redis 4.0以(yi)及Redis 5.0版本不(bu)支持綁定彈(dan)性IP,無法通過公(gong)網(wang)訪問。
下圖中安裝了Nginx代理工(gong)具(ju)的ECS就是一臺跳板機,它與DCS Redis實(shi)例在相同VPC,可(ke)通(tong)過子網IP訪問Redis實(shi)例;為ECS綁定彈性(xing)IP后(hou),公(gong)網可(ke)以訪問ECS;Nginx支持監聽多(duo)個端口,并將請求內容轉發到(dao)不(bu)同的后(hou)端Redis實(shi)例。
圖 通過Nginx訪問VPC內(nei)DCS Redis

購買一臺ECS
1.確認Redis實例(li)所在的(de)虛擬(ni)私有云。
如(ru)下圖所示(shi),已購(gou)買(mai)一個虛(xu)擬私有云在“vpc-demo”內的Redis 4.0/Redis 5.0主備實例。
圖 Redis緩存實例信息

2.購(gou)買一臺同在“vpc-demo”的(de)ECS,并為其綁定一個彈性公網IP,按需選(xuan)擇帶寬,夠用就(jiu)好(hao)。
圖 ECS信息

安裝Nginx
1.購(gou)買ECS后,需要在ECS上安裝Nginx,本文(wen)以ECS操作系(xi)統為(wei)Centos7.x為(wei)例進行安裝,不同操作系(xi)統命令(ling)稍有不同。
2.執行以下命(ming)令(ling),添加(jia)Nginx到(dao)yum源(yuan)。
sudo rpm -Uvh //nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
3.添加(jia)完之后,執行以下(xia)命(ming)令,查(cha)看(kan)是(shi)否已經(jing)添加(jia)成(cheng)功(gong)。
yum search nginx
4.添(tian)加成功(gong)之后,執行以下命(ming)令,安裝Nginx。
sudo yum install -y nginx
5.執行以下命(ming)令安(an)裝stream模塊。
yum install nginx-mod-stream
6.啟動Nginx并設置為開機自動運行(xing)。
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
7.在(zai)本地(di)瀏覽器中輸入服(fu)務器地(di)址(zhi)(ECS公網IP地(di)址(zhi)),查看安裝是否成功。
如(ru)果出現下面(mian)頁面(mian),則(ze)表示安裝成功。


配置Nginx
1.Nginx安(an)裝后(hou),需(xu)要配置請求轉發規則,告訴Nginx哪個端(duan)口收到的請求,應該轉發到后(hou)端(duan)哪個Redis實例(li)。
修改配置文件。
cd /etc/nginx
vi nginx.conf
配置(zhi)(zhi)示例(li)(li)如下,如果有多個(ge)redis實例(li)(li)需要公網(wang)連接(jie),可以配置(zhi)(zhi)多個(ge)server,在(zai)proxy_pass中配置(zhi)(zhi)Redis實例(li)(li)連接(jie)地址。
stream {
server {
listen 8080;
proxy_pass 192.168.0.5:6379;
}
server {
listen 8081;
proxy_pass 192.168.0.6:6379;
}
}
說明proxy_pass參(can)數配置值為同(tong)一(yi)vpc下的Redis實(shi)例的IP地址(zhi),具體可從緩存(cun)實(shi)例詳情(qing)頁面的“連接信息”區域(yu)獲取。
圖 Nginx配置

2.重啟Nginx服務。
service nginx restart
3.驗證啟動(dong)是(shi)否成(cheng)功。
netstat -an|grep 808
圖 啟動Nginx及(ji)驗證

通過Nginx訪問Redis
- 登錄虛擬私有云控制臺,確認跳板機的安全組規則是否放開,如果沒有,則需要為安全組放開8080和8081兩個端口。
- 在公網環境中打開Redis命令行界面,輸入如下命令,登錄與查詢都正常,大功告成。
說明公網環境已參考Redis-cli連接中相關步驟,安裝Redis-cli客戶端。
./redis-cli -h {myeip} -p {port}
其中(zhong),命令中(zhong)的(de){myeip}為主機連(lian)接地址,需要填寫ECS的(de)彈(dan)性(xing)IP,端口需要填寫ECS上Nginx的(de)監聽(ting)端口。
如果Redis實例設置了密碼訪問(wen),則執(zhi)行本(ben)步驟輸(shu)入密碼,校驗通過后才可進(jin)行緩存(cun)數據讀寫。
auth <password>
其中“<password>”為(wei)創建(jian)Redis實例(li)時自定(ding)義(yi)的(de)密碼(ma),請按實際情(qing)況修改后執行。
密碼訪問回顯示例,及(ji)登錄查詢如下(xia):
