TL; DR 버전 : Windows Server 2008 R2의 심층적 인 Broadcom 네트워킹 버그였습니다. 인텔 하드웨어로 교체하여 수정했습니다. 더 이상 Broadcom 하드웨어를 사용하지 않습니다. 이제까지.
우리는 Linux-HA 프로젝트의 하트 비트 와 함께 HAProxy 를 사용하고 있습니다 . 장애 조치를 제공하기 위해 두 개의 Linux 인스턴스를 사용하고 있습니다. 각 서버에는 고유 한 공용 IP와 IP의 가상 인터페이스 (eth1 : 1)를 사용하여 두 서버간에 공유되는 단일 IP가 있습니다 : 69.59.196.211
가상 인터페이스 (eth1 : 1) IP 69.59.196.211은 그 뒤에있는 Windows 서버의 게이트웨이로 구성되며 ip_forwarding을 사용하여 트래픽을 라우팅합니다.
Linux 게이트웨이 뒤의 Windows 서버 중 하나에서 가끔 네트워크 중단이 발생했습니다. HAProxy는 서버가 오프라인 상태임을 감지하여 실패한 서버로 이동하고 게이트웨이를 핑 (Ping)하여 확인할 수 있습니다.
32 바이트의 데이터로 핑 69.59.196.211 : 69.59.196.220의 응답 : 대상 호스트에 연결할 수 없습니다.
arp -a
이 실패한 서버에서 실행 하면 게이트웨이 주소 (69.59.196.211)에 대한 항목이 없음을 나타냅니다 .
인터페이스 : 69.59.196.220 --- 0xa 인터넷 주소 실제 주소 유형 69.59.196.161 00-26-88-63-c7-80 동적 69.59.196.210 00-15-5d-0a-3e-0e 동적 69.59.196.212 00-21-5e-4d-45-c9 동적 69.59.196.213 00-15-5d-00-b2-0d 동적 69.59.196.215 00-21-5e-4d-61-1a 동적 69.59.196.217 00-21-5e-4d-2c-e8 동적 69.59.196.219 00-21-5e-4d-38-e5 동적 69.59.196.221 00-15-5d-00-b2-0d 동적 69.59.196.222 00-15-5d-0a-3e-09 동적 69.59.196.223 ff-ff-ff-ff-ff-ff 정적 224.0.0.22 01-00-5e-00-00-16 정적 224.0.0.252 01-00-5e-00-00-fc 정적 225.0.0.1 01-00-5e-00-00-01 정적
Linux 게이트웨이 인스턴스에서 다음을 arp -a
보여줍니다.
eth1의 <미완료>에서 peak-colo-196-220.peak.org (69.59.196.220) eth1의 00 : 21 : 5e : 4d : 45 : c9에 stackoverflow.com (69.59.196.212) [ether] eth1의 peak-colo-196-215.peak.org (69.59.196.215) 00 : 21 : 5e : 4d : 61 : 1a [ether] eth1의 peak-colo-196-219.peak.org (69.59.196.219) : 00 : 21 : 5e : 4d : 38 : e5 [ether] eth1의 peak-colo-196-222.peak.org (69.59.196.222) : 00 : 15 : 5d : 0a : 3e : 09 [ether] eth1의 00 : 26 : 88 : 63 : c7 : 80에서 peak-colo-196-209.peak.org (69.59.196.209) eth1의 peak-colo-196-217.peak.org (69.59.196.217) : 00 : 21 : 5e : 4d : 2c : e8 [ether]
arp가 때때로이 실패한 서버의 항목을 <불완전>으로 설정 한 이유는 무엇입니까? arp 항목을 정적으로 정의해야합니까? 99 %의 시간 동안 작동하기 때문에 항상 arp를 내버려 두었지만이 경우에는 실패한 것으로 보입니다. 이 문제를 해결하는 데 도움이되는 추가 문제 해결 단계가 있습니까?
우리가 시도한 것들
여전히 도움이되지 않은 Linux 게이트웨이 중 하나에서 테스트하기 위해 정적 arp 항목을 추가했습니다.
root@haproxy2:~# arp -a
peak-colo-196-215.peak.org (69.59.196.215) at 00:21:5e:4d:61:1a [ether] on eth1
peak-colo-196-221.peak.org (69.59.196.221) at 00:15:5d:00:b2:0d [ether] on eth1
stackoverflow.com (69.59.196.212) at 00:21:5e:4d:45:c9 [ether] on eth1
peak-colo-196-219.peak.org (69.59.196.219) at 00:21:5e:4d:38:e5 [ether] on eth1
peak-colo-196-209.peak.org (69.59.196.209) at 00:26:88:63:c7:80 [ether] on eth1
peak-colo-196-217.peak.org (69.59.196.217) at 00:21:5e:4d:2c:e8 [ether] on eth1
peak-colo-196-220.peak.org (69.59.196.220) at 00:21:5e:4d:30:8d [ether] PERM on eth1
root@haproxy2:~# arp -i eth1 -s 69.59.196.220 00:21:5e:4d:30:8d
root@haproxy2:~# ping 69.59.196.220
PING 69.59.196.220 (69.59.196.220) 56(84) bytes of data.
--- 69.59.196.220 ping statistics ---
7 packets transmitted, 0 received, 100% packet loss, time 6006ms
Windows 웹 서버를 재부팅하면 다른 네트워크 변경없이이 문제가 일시적으로 해결되지만 경험상이 문제가 다시 발생합니다.
네트워크 카드 및 스위치 교환
실패한 Windows 서버의 스위치 포트에있는 링크 표시등이 실패한 인터페이스의 1Gb 대신 100Mb에서 실행되고 있음을 알았습니다. 케이블을 다른 여러 열린 포트로 옮겼으며 링크는 내가 시도한 각 포트에 100Mb를 표시했습니다. 또한 동일한 결과로 케이블을 교체했습니다. Windows에서 네트워크 카드의 속성을 변경하려고 시도했지만 서버가 잠기고 적용을 클릭 한 후 하드 리셋이 필요했습니다. 이 Windows 서버에는 두 개의 물리적 네트워크 인터페이스가 있으므로 두 인터페이스의 케이블과 네트워크 설정을 교체하여 문제가 인터페이스를 따르는 지 확인했습니다. 공용 인터페이스가 다시 다운되면 네트워크 카드에 문제가 없음을 알게됩니다.
(우리는 또한 다른 스위치를 시도했지만 변경하지 않았습니다)
네트워크 하드웨어 드라이버 버전 변경
최신 Broadcom 드라이버와 Windows Server 2008 R2에 포함 된 기본 제공 드라이버와 동일한 문제가있었습니다.
네트워크 케이블 교체
마지막 도랑 노력으로 우리는 서버 / 스위치 사이의 모든 패치 코드를 교체한다는 또 다른 변화를 기억했습니다. 개인 인터페이스의 경우 1ft-3ft 길이의 녹색과 공용 인터페이스의 다른 빨간색 케이블 세트 두 개를 구입했습니다. 우리는 모든 공용 인터페이스 패치 케이블을 다른 브랜드로 교체하고 일주일 동안 문제없이 서버를 운영했습니다 ...
체크섬 오프로드 비활성화, TProxy 제거
또한 드라이버에서 TCP / IP 체크섬 오프로드를 비활성화하고 변경하지 않았습니다. 우리는 이제 TProxy를 끌어 내고 x-forwarded-for
멋진 IP 주소를 다시 쓰지 않고도 보다 전통적인 네트워크 구성으로 전환하고 있습니다. 도움이되는지 살펴 보겠습니다.
스위치 가상화 공급자
오프-가능성에 이것은 Hyper-V와 관련이 있었으며 (우리는 Linux VM을 호스트하고 있음) VMWare Server로 전환했습니다. 변경 없음.
호스트 모델 전환
문제 해결 과정이 끝났고 이제 공식적으로 Microsoft 지원이 필요합니다. 호스트 모델 변경을 권장했습니다.
- http://en.wikipedia.org/wiki/Host_model
- http://technet.microsoft.com/en-us/magazine/2007.09.cableguy.aspx
우리는 그렇게했으며 2008 R2 SP1에 포함 된 일부 미공개 커널 핫픽스도 얻었습니다. 수정 사항이 없습니다.
네트워크 카드 하드웨어 교체
궁극적으로 Broadcom 네트워크 하드웨어를 Intel 네트워크 하드웨어로 교체하면이 문제가 해결되었습니다. 따라서 Broadcom Windows Server 2008 R2 드라이버에 결함이 있다고 생각합니다.