35.3. Ramp 노드를 사용하여 터널 설정
이전 솔루션은 가능한 경우도 있습니다. 예를 들어 F5®는 호환되지 않는 사용자 지정 Linux 커널 및 배포를 사용하기 때문에 F5 BIG-IP ® 호스트에서 OpenShift Container Platform 노드 인스턴스 또는 OpenShift Container Platform SDN을 실행할 수 없습니다.
대신 F5 BIG-IP® 가 Pod에 도달할 수 있도록 클러스터 네트워크 내에서 기존 노드를 확대 노드로 선택하고 F5 BIG-IP® 호스트와 지정된 확장 노드 간에 터널을 설정할 수 있습니다. 그렇지 않으면 일반 OpenShift Container Platform 노드이므로 확장 노드에는 클러스터 네트워크의 모든 노드에 있는 모든 Pod로 트래픽을 라우팅하는 데 필요한 구성이 있습니다. 따라서 확장 노드는 F5 BIG-IP® 호스트가 전체 클러스터 네트워크에 액세스할 수 있는 게이트웨이의 역할을 가정합니다.
다음은 F5 BIG-IP® 호스트와 지정된 확장 노드 간에 ipip 터널을 설정하는 예입니다.
F5 BIG-IP® 호스트에서 다음을 수행합니다.
다음 변수를 설정합니다.
# F5_IP=10.3.89.66 1 # RAMP_IP=10.3.89.89 2 # TUNNEL_IP1=10.3.91.216 3 # CLUSTER_NETWORK=10.128.0.0/14 4
이전 경로, 자체, 터널 및 SNAT 풀을 삭제합니다.
# tmsh delete net route $CLUSTER_NETWORK || true # tmsh delete net self SDN || true # tmsh delete net tunnels tunnel SDN || true # tmsh delete ltm snatpool SDN_snatpool || true
새 터널, 셀프, 경로 및 SNAT 풀을 생성하고 가상 서버에서 SNAT 풀을 사용합니다.
# tmsh create net tunnels tunnel SDN \ \{ description "OpenShift SDN" local-address \ $F5_IP profile ipip remote-address $RAMP_IP \} # tmsh create net self SDN \{ address \ ${TUNNEL_IP1}/24 allow-service all vlan SDN \} # tmsh create net route $CLUSTER_NETWORK interface SDN # tmsh create ltm snatpool SDN_snatpool members add { $TUNNEL_IP1 } # tmsh modify ltm virtual ose-vserver source-address-translation { type snat pool SDN_snatpool } # tmsh modify ltm virtual https-ose-vserver source-address-translation { type snat pool SDN_snatpool }
업그레이드 노드에서 다음을 수행합니다.
다음은 지속되지 않는 구성을 만듭니다. 즉, 확대기 노드 또는 openvswitch 서비스를 다시 시작하면 설정이 사라집니다.
다음 변수를 설정합니다.
# F5_IP=10.3.89.66 # TUNNEL_IP1=10.3.91.216 # TUNNEL_IP2=10.3.91.217 1 # CLUSTER_NETWORK=10.128.0.0/14 2
이전 터널을 삭제합니다.
# ip tunnel del tun1 || true
적합한 L2 연결 인터페이스(예 : eth0)를 사용하여 확장기 노드에서 ipip 터널을 생성합니다.
# ip tunnel add tun1 mode ipip \ remote $F5_IP dev eth0 # ip addr add $TUNNEL_IP2 dev tun1 # ip link set tun1 up # ip route add $TUNNEL_IP1 dev tun1 # ping -c 5 $TUNNEL_IP1
SDN 서브넷에서 사용하지 않는 IP를 사용하여 터널 IP를 조정합니다.
# source /run/openshift-sdn/config.env # tap1=$(ip -o -4 addr list tun0 | awk '{print $4}' | cut -d/ -f1 | head -n 1) # subaddr=$(echo ${OPENSHIFT_SDN_TAP1_ADDR:-"$tap1"} | cut -d "." -f 1,2,3) # export RAMP_SDN_IP=${subaddr}.254
이
RAMP_SDN_IP
를 tun0 (로컬 SDN의 게이트웨이)에 추가 주소로 할당합니다.# ip addr add ${RAMP_SDN_IP} dev tun0
SNAT에 대한 OVS 규칙을 수정합니다.
# ipflowopts="cookie=0x999,ip" # arpflowopts="cookie=0x999, table=0, arp" # # ovs-ofctl -O OpenFlow13 add-flow br0 \ "${ipflowopts},nw_src=${TUNNEL_IP1},actions=mod_nw_src:${RAMP_SDN_IP},resubmit(,0)" # ovs-ofctl -O OpenFlow13 add-flow br0 \ "${ipflowopts},nw_dst=${RAMP_SDN_IP},actions=mod_nw_dst:${TUNNEL_IP1},resubmit(,0)" # ovs-ofctl -O OpenFlow13 add-flow br0 \ "${arpflowopts}, arp_tpa=${RAMP_SDN_IP}, actions=output:2" # ovs-ofctl -O OpenFlow13 add-flow br0 \ "${arpflowopts}, priority=200, in_port=2, arp_spa=${RAMP_SDN_IP}, arp_tpa=${CLUSTER_NETWORK}, actions=goto_table:30" # ovs-ofctl -O OpenFlow13 add-flow br0 \ "arp, table=5, priority=300, arp_tpa=${RAMP_SDN_IP}, actions=output:2" # ovs-ofctl -O OpenFlow13 add-flow br0 \ "ip,table=5,priority=300,nw_dst=${RAMP_SDN_IP},actions=output:2" # ovs-ofctl -O OpenFlow13 add-flow br0 "${ipflowopts},nw_dst=${TUNNEL_IP1},actions=output:2"
선택적으로 고가용성으로 확장기 노드를 구성하지 않으려는 경우, 업그레이드 노드를 예약할 수 없음으로 표시합니다. 다음 섹션을 따르고 고가용성 확장 노드 생성을 계획하는 경우 이 단계를 건너뜁니다.
$ oc adm manage-node <ramp_node_hostname> --schedulable=false
35.3.1. 가용성이 높은 Ramp 노드 구성
keepalived 를 내부적으로 사용하는 OpenShift Container Platform의 ipfailover 기능을 사용하여 확장 노드를 F5 BIG-IP®의 관점에서 고가용성으로 사용할 수 있습니다. 이를 위해 먼저 동일한 L2 서브넷에서 두 개의 노드(예: ramp-node-1 및 ramp-node-2) 를 가져옵니다.
그런 다음 가상 IP 또는 VIP 에 사용할 동일한 서브넷 내에서 할당되지 않은 일부 IP 주소를 선택합니다. F5 BIG- IP®에서 터널을 구성할 RAMP_
IP 변수로 설정됩니다.
예를 들어 10.20.30.0/24 서브넷을 확대 노드에 사용하고 있고 10.20.30.2 를 ramp-node-1 및 10.20.30.3 으로 할당했다고 가정합니다. VIP의 경우 동일한 10.20.30.0/24 서브넷에서 할당되지 않은 주소를 선택합니다(예: 10.20.30.4). 그런 다음 ipfailover 를 구성하려면 f5rampnode 와 같은 레이블을 사용하여 두 노드를 모두 표시합니다.
$ oc label node ramp-node-1 f5rampnode=true $ oc label node ramp-node-2 f5rampnode=true
ipfailover 설명서 의 지침과 유사하게 서비스 계정을 생성하여 권한이 있는 SCC에 추가해야 합니다. 먼저 f5ipfailover 서비스 계정을 생성합니다.
$ oc create serviceaccount f5ipfailover -n default
다음으로 f5ipfailover 서비스를 권한 있는 SCC에 추가할 수 있습니다. 기본 네임스페이스의 f5ipfailover 를 권한 있는 SCC에 추가하려면 다음을 실행합니다.
$ oc adm policy add-scc-to-user privileged system:serviceaccount:default:f5ipfailover
마지막으로 선택한 VIP(RAM P_IP
변수) 및 f5ipfailover 서비스 계정을 사용하여 ip failover 를 구성하고 이전에 설정한 f5rampnode 레이블을 사용하여 VIP를 두 노드에 할당합니다.
# RAMP_IP=10.20.30.4
# IFNAME=eth0 1
# oc adm ipfailover <name-tag> \
--virtual-ips=$RAMP_IP \
--interface=$IFNAME \
--watch-port=0 \
--replicas=2 \
--service-account=f5ipfailover \
--selector='f5rampnode=true'
- 1
RAMP_IP
를 구성해야 하는 인터페이스입니다.
위의 설정을 사용하면 현재 할당되어 있는 업그레이드 노드 호스트가 실패하면 VIP(RAM P_IP
변수)가 자동으로 다시 할당됩니다.