1. 程式人生 > >系統運維:DNS通過軟路由(Quagga’s OSPF)實現負載均衡

系統運維:DNS通過軟路由(Quagga’s OSPF)實現負載均衡

概要說明

DNS是非常重要的服務,需要保證業務的安全性,可靠性與可用性。

原始的DNS主從結構雖然能夠實現DNS的主備,但是無法使用統一的IP對外服務。所以我們將OSPF引入,多臺DNS伺服器都配置統一的VIP作為業務IP,統一對外服務。

LVS+DNS遇到的問題(keepalived軟體bug)

為啥要引入DNS+軟路由的方式呢,是因為在使用LVS+DNS架構中,出現過問題。

  • 故障描述

在主LVS發生網路擁塞情況下,會引起ARP表錯誤更新

  • 故障原因

Master VRRP心跳包傳送至Slave VRRP延時,致使Slave VRRP錯誤的進入Master狀態,併發送ARP至三層交換機閘道器,導致閘道器錯誤更新ARP快取(VIP對應的MAC地址)

  • 故障日誌

OSPF+DNS替代LVS+DNS

要想使用OSPF+DNS來替代LVS+DNS,那就要看看OSPF+DNS的能否解決我們的需求

  • 負載均衡

OSPF自帶負載均衡演算法,所以負載均衡肯定沒有問題

  • 後端伺服器IP自動增減

我們在OSPF+DNS中引入systemd依賴關係來解決DNS服與OSPF服務之間的關聯關係,保證DNS服務一旦出現故障,自動關閉OSPF服務

顯然,OSPF+DNS的架構是可以實現,而且並不存在keepalived中出現的VRRP主從的bug,而且keepalived雖然是主從結構,但是實際業務流量只能在單邊跑(master在提供服務時,slave其實只算備份,沒有任務業務流量)

OSPF+DNS架構拓撲

  • DNS叢集安裝軟路由工具Quagga
  • DNS Server與交換機之前採用點對點/30位IP配置
  • DNS Server上全部配置迴環口(DNS對外服務統一IP)
  • 使用Systemd做依賴關係
  • DNS叢集可以橫向擴充套件

環境搭建

  • DNS叢集搭建(略)
  • Quagga安裝

yum install quagga.x86_64

  • Zebra配置

DNS Server1
hostname yxj-10-59-90-2.test.com
interface em2
ip address 10.59.90.2
DNS Server2
hostname yxj-10-59-90-6.test.com
interface em2
ip address 10.59.90.6

  • OSPF配置

DNS Server1
interface em2
ip ospf network point-to-point
ip ospf hello-interval 1
ip ospf dead-interval 4
router ospf
ospf router-id 10.59.90.2
network 10.59.90.2/30 area 0.0.0.0
network 10.59.111.250/32 area 0.0.0.0
DNS Server2
interface em2
ip ospf network point-to-point
ip ospf hello-interval 1
ip ospf dead-interval 4
router ospf
ospf router-id 10.59.90.6
network 10.59.90.6/30 area 0.0.0.0
network 10.59.111.250/32 area 0.0.0.0

  • 交換機配置(H3C)

interface gi1/0/1
ip address 10.59.90.1 255.255.255.252
ospf timer hello 1
ospf timer dead 4
ospf network-tpye p2p
interface gi1/0/2
ip address 10.59.90.5 255.255.255.252
ospf timer hello 1
ospf timer dead 4
ospf network-tpye p2p
ospf 1
description osp_dns
area 0.0.0.0
network 10.59.90.1 0.0.0.3
network  10.59.90.4 0.0.0.3

  • systemd依賴關係配置

原文來自微信公眾號:餘果果園