Red Hat Enterprise Linux
RHEL 컴퓨트 노드에서 동작하는 OpenStack 배포에 Calico 오픈 소스를 설치하는 문서예요. etcd 기반 데이터스토어를 쓰는 OpenStack용 Calico의 첫 설치 절차를 안내해요.
출처: 문서
본문
SECONDARY: OpenStack RHEL 설치 경로는 더 이상 활발하게 테스트되지 않아서 동작하지 않을 수 있어요. 이 안내는 혹시 도움이 될 수 있으리라는 희망으로 남겨둔 것이에요.
이 안내는 Calico를 처음 설치하는 과정을 다뤄요. 기존 시스템을 업그레이드한다면 OpenStack에서 Calico 업그레이드를 대신 참고하세요.
설치는 두 섹션으로 이루어져 있어요. OpenStack 컨트롤 노드에 Calico를 추가하는 것과, OpenStack 컴퓨트 노드에 Calico를 추가하는 것이요. 컨트롤/컴퓨트 섹션의 개별 지침으로 넘어가기 전에 각 노드에서 공통 단계를 먼저 수행해요. 컨트롤과 컴퓨트 역할을 겸한 노드를 만들고 싶다면 세 섹션을 모두 진행해요.
시작하기 전에
- 요구 사항을 충족하는지 확인해요.
- 하나 이상의 RHEL(Red Hat Enterprise Linux) 호스트에 SSH 접근과 root 권한이 있는지 확인해요.
- RHEL 호스트 사이에서 DNS가 동작하도록 만들어요(네트워크에 DNS가 없다면
/etc/hosts를 사용해요). - RHEL 호스트에 OpenStack을 설치해요.
공통 단계
Calico를 설치하는 모든 머신에서 필요한 몇 가지 단계가 있어요. 이 섹션에 자세히 설명되어 있어요.
-
EPEL 리포지터리를 추가해요. OpenStack을 설치하면서 이미 추가했을 수도 있어요.
-
Calico 리포지터리를 구성해요.
cat > /etc/yum.repos.d/calico.repo <<EOF [calico] name=Calico Repository baseurl=https://binaries.projectcalico.org/rpm/calico-3.33/ enabled=1 skip_if_unavailable=0 gpgcheck=1 gpgkey=https://binaries.projectcalico.org/rpm/calico-3.33/key priority=97 EOF -
etcd3gwPython 패키지를 설치해요. Calico의 OpenStack 드라이버와 DHCP 에이전트에 필요해요.yum install python3-pip pip3 install etcd3gw==2.4.0 -
/etc/neutron/neutron.conf파일을 편집해요. 다음 내용을 담은[calico]섹션을 추가하는데,<ip>는 etcd 서버의 IP 주소예요.[calico] etcd_host = <ip>
컨트롤 노드 설치
각 컨트롤 노드에서 다음 단계를 수행해요.
-
구성된 OpenStack 상태를 모두 삭제해요. 특히 위에서 참조한 설치 과정이 만든 인스턴스, 라우터, 서브넷, 네트워크(이 순서대로)를 지워요. 웹 대시보드나 명령줄로 할 수 있어요.
SUCCESS: 웹 대시보드의 Admin과 Project 섹션 둘 다 네트워크와 라우터 하위 섹션이 있어요. 일부 네트워크는 Admin 섹션에서 삭제해야 할 수 있어요.
WARNING: 호환되지 않는 상태가 남아 있으면 Calico 설치가 실패해요.
-
/etc/neutron/neutron.conf파일을 편집해요.[DEFAULT]섹션에서core_plugin으로 시작하는 줄을 찾아core_plugin = calico로 바꿔요. -
calico-control패키지를 설치해요.yum install -y calico-control -
neutron server 프로세스를 재시작해요.
service neutron-server restart
컴퓨트 노드 설치
각 컴퓨트 노드에서 다음 단계를 수행해요.
-
/etc/nova/nova.conf파일을 열고[DEFAULT]섹션에서 다음 줄을 제거해요.linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver[neutron]섹션에서service_neutron_metadata_proxy또는service_metadata_proxy를True로 설정하는 줄이 있다면 함께 지워요. 또metadata_proxy_shared_secret을 설정하는 줄이 있다면 그 줄도 주석 처리해요.nova compute를 재시작해요.
service openstack-nova-compute restart이 노드가 컨트롤러이기도 하다면 nova-api도 추가로 재시작해요.
service openstack-nova-api restart -
실행 중이라면 Open vSwitch 서비스를 중지해요.
service neutron-openvswitch-agent stop service openvswitch stop그다음, 재부팅 시 서비스가 다시 뜨지 않도록 만들어요.
chkconfig openvswitch off chkconfig neutron-openvswitch-agent off이어서 컨트롤 노드에서 다음 명령을 실행해 방금 중지한 에이전트들을 찾아요.
neutron agent-list각 에이전트를 컨트롤 노드에서 다음 명령으로 삭제해요.
<agent-id>는 해당 에이전트의 ID로 바꿔요.neutron agent-delete <agent-id> -
컴퓨트 호스트에 Neutron 인프라 코드를 설치해요.
yum install -y openstack-neutron -
/etc/neutron/neutron.conf파일을 편집해요.[oslo_concurrency]섹션에서lock_path변수가 주석 해제되어 있고 다음과 같이 설정되어 있는지 확인해요.# Directory to use for lock files. For security, the specified directory should # only be writable by the user running the processes that need locking. # Defaults to environment variable OSLO_LOCK_PATH. If external locks are used, # a lock path must be set. lock_path = $state_path/lock -
Neutron DHCP 에이전트를 중지하고 비활성화한 뒤, Calico DHCP 에이전트를 설치해요. Calico DHCP 에이전트는 etcd를 사용하기 때문에 더 많은 호스트로 확장할 수 있어요.
service neutron-dhcp-agent stop chkconfig neutron-dhcp-agent off yum install -y calico-dhcp-agent -
L3 라우팅 에이전트나 Linux 브리징 에이전트 같은 다른 라우팅/브리징 에이전트도 중지하고 비활성화해요. 이것들은 Calico와 충돌해요.
service neutron-l3-agent stop chkconfig neutron-l3-agent off브리징 에이전트와 그 외 다른 에이전트에도 똑같이 반복해요.
-
이 노드가 컨트롤러가 아니라면 Nova Metadata API를 설치하고 시작해요. 컴퓨트와 컨트롤러를 겸한 노드에서는 이 단계가 필요 없어요.
yum install -y openstack-nova-api service openstack-nova-metadata-api restart chkconfig openstack-nova-metadata-api on -
BIRD BGP 클라이언트를 설치해요.
yum install -y bird bird6 -
calico-compute패키지를 설치해요.yum install -y calico-compute -
BIRD를 구성해요. Calico는 기본적으로 풀 BGP 메시를 피하기 위해 라우트 리플렉터를 배포한다고 가정해요. 이를 위해 라우트 리플렉터로의 단일 피어링을 담은 BIRD 구성 파일을 준비하는 구성 스크립트를 포함하고 있어요. 네트워크에 맞는 상황이라면 다음 명령 중 하나 또는 둘 다를 실행할 수 있어요.
컴퓨트 호스트 간 IPv4 연결용이에요.
calico-gen-bird-conf.sh <compute_node_ip> <route_reflector_ip> <bgp_as_number>그리고/또는 컴퓨트 호스트 간 IPv6 연결용이에요.
calico-gen-bird6-conf.sh <compute_node_ipv4> <compute_node_ipv6> <route_reflector_ipv6> <bgp_as_number>컴퓨트 노드를 라우트 리플렉터 클라이언트로 받아들이도록 라우트 리플렉터를 구성해야 할 수도 있어요.
풀 BGP 메시를 구성하는 경우에는 각 컴퓨트 호스트에서 BGP 구성을 적절히 직접 처리해야 해요. 위 스크립트는
<route_reflector_ip>를 다른 컴퓨트 호스트의 IP로 바꾸면 BIRD용 샘플 구성을 만드는 데도 쓸 수 있어요. 이렇게 하면 단일 피어 연결용 구성이 생성되고, 이를 복제해서 메시의 각 컴퓨트 호스트에 맞게 갱신하면 돼요.BIRD가 크래시하거나 업그레이드될 때 VM 간 연결을 유지하려면 BIRD graceful restart를 구성해요. systemd 유닛 파일 /usr/lib/systemd/system/bird.service(IPv6라면 bird6.service)를 편집해요.
ExecStart줄 끝에-R을 추가해요.[Service]섹션에KillSignal=SIGKILL을 새 줄로 추가해요.systemctl daemon-reload를 실행해 systemd에게 그 파일을 다시 읽으라고 알려줘요.
BIRD(IPv6라면 BIRD 6)가 실행 중이고 재부팅 시에도 시작되도록 확인해요.
service bird restart service bird6 restart chkconfig bird on chkconfig bird6 on -
다음 내용을 담은
/etc/calico/felix.cfg를 만들어요.<ip>는 etcd 서버의 IP 주소예요.[global] DatastoreType = etcdv3 EtcdAddr = <ip>:2379 EndpointStatusPathPrefix = none -
Felix 서비스를 재시작해요.
service calico-felix restart
etcd 인증 구성
etcd 클러스터에서 인증이 활성화되어 있다면, 관련 Calico 구성 요소에도 etcd 사용자 이름과 비밀번호를 구성해야 해요. /calico/로 시작하는 모든 키를 읽고 쓸 권한이 있는 단일 etcd 사용자를 Calico용으로 만들 수도 있고, 구성 요소마다 더 정밀한 권한을 가진 별도의 etcd 사용자를 만들 수도 있어요.
다음 표는 Calico for OpenStack의 각 구성 요소를 어디서 구성해야 하는지, 그리고 각 구성 요소에 필요한 상세 접근 권한을 정리한 거예요.
| 구성 요소 | 구성 위치 | 접근 권한 |
|---|---|---|
| Felix | 각 컴퓨트 노드의 Felix 환경에 있는 CALICO_ETCD_USERNAME과 CALICO_ETCD_PASSWORD 변수. |
여기 참고 |
| Neutron driver | 각 컨트롤 노드의 /etc/neutron/neutron.conf [calico] 섹션에 있는 etcd_username과 etcd_password. |
여기 참고 |
| DHCP agent | 각 컴퓨트 노드의 /etc/neutron/neutron.conf [calico] 섹션에 있는 etcd_username과 etcd_password. |
여기 참고 |
더 알아보기 (Learn more)
OpenStack용 Calico 설치는 컨트롤 노드와 컴퓨트 노드 양쪽에 공통 단계를 먼저 적용한 뒤 역할별 패키지를 설치하는 구조예요. 기존 OpenStack 상태(인스턴스, 라우터, 서브넷, 네트워크)를 미리 정리하는 것이 설치 성공의 중요한 전제라는 점을 기억해 두세요.