ULL Compute Engine 인스턴스 만들기
이 페이지에서는 U4 머신 계열의 U4P 또는 U4C 머신 유형을 사용하여 지연 시간이 매우 짧은 (ULL) Compute Engine 인스턴스를 만드는 방법을 설명합니다.
ULL 인프라 구성 프로세스에 관한 개요는 ULL 솔루션 구성 개요를 참고하세요.
시작하기 전에
ULL 컴퓨팅 인스턴스를 만들기 전에 다음 섹션을 참고하세요.
VPC 네트워크 만들기
아직 만들지 않은 경우 ULL 솔루션 구성 개요에 설명된 대로 각 인스턴스의 네트워크 인터페이스에 대한 VPC 네트워크를 만듭니다.
배치 정책 만들기
선택적으로 분산 배치 정책을 ULL 인스턴스에 적용하여 복원력을 높일 수 있습니다. 자세한 내용은 Compute Engine 문서의 분산 배치 정책 만들기 및 적용을 참고하세요.
프로젝트 설정
프로젝트를 사용하도록 gcloud CLI를 설정합니다. 또는 다음 절차에서 각 명령어에 --project=PROJECT_ID 플래그를 포함할 수 있습니다.
gcloud config set project PROJECT_ID
PROJECT_ID를 프로젝트의 ID로 바꿉니다.
필요한 역할
Compute Engine 인스턴스를 만드는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
컴퓨트 인스턴스를 만들고 관리: 프로젝트의 Compute 인스턴스 관리자 (
compute.instanceAdmin) 역할
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
ULL 인스턴스 구성 개요
ULL 컴퓨팅 인스턴스를 만들고 ULL 유니캐스트 및 멀티캐스트 트래픽을 보내거나 받도록 인스턴스를 구성하려면 다음을 실행하세요.
| 단계 | 설명 |
|---|---|
| ULL 인스턴스 만들기 | U4P 또는 U4C 머신 유형을 사용하여 인스턴스를 만들고 해당 네트워크 인터페이스를 범용 VPC 네트워크와 ULL VPC 네트워크에 연결합니다. 인스턴스를 멀티캐스트 소비자로 사용하려면 igmp-query 플래그를 IGMP_QUERY_V2으로 설정합니다. |
ULL 유니캐스트 트래픽의 비nic0 인터페이스 라우팅 구성 |
이그레스 패킷이 올바른 인터페이스를 통해 나가고 비대칭 라우팅을 방지하도록 게스트 OS에서 소스 기반 정책 라우팅을 구성합니다. |
| 인스턴스를 ULL 멀티캐스트 소비자로 구성 |
ULL 네트워크 인터페이스에서 멀티캐스트 트래픽을 수신하려면 다음을 완료하세요. 성능을 더 최적화하려면 Onload 사용에 설명된 대로 busy polling을 사용 설정하는 것이 좋습니다. |
또한 이 페이지의 명령어 예시를 사용하여 멀티캐스트 연결을 테스트할 수 있습니다.
ULL 인스턴스 만들기
이 섹션에서는 ULL 유니캐스트 및 멀티캐스트에 사용할 새 인스턴스를 만드는 방법을 설명합니다.
추가 구성 옵션을 비롯해 컴퓨팅 인스턴스 만들기에 관한 일반적인 내용은 Compute Engine 인스턴스 만들기 및 시작을 참고하세요.
gcloud
ULL 인스턴스를 만들려면 compute instances create 명령어를 사용합니다.
ULL VPC 네트워크에 연결되는 네트워크 인터페이스의 경우 no-address를 지정해야 합니다.
또한 다음 명령어에는 인스턴스가 멀티캐스트 소비자가 되도록 지원하는 igmp-query 플래그가 포함되어 있습니다. 인스턴스가 멀티캐스트 프로듀서 전용이거나 인스턴스가 유니캐스트만 전송하고 수신하는 경우에는 이 플래그가 필요하지 않습니다.
gcloud compute instances create INSTANCE_NAME \
--zone=ZONE \
--machine-type=MACHINE_TYPE \
--image-project=IMAGE_PROJECT \
--image=IMAGE_NAME \
--maintenance-policy=TERMINATE \
--network-interface=nic-type=NIC_TYPE,queue-count=QUEUES,network=GENERAL_PURPOSE_VPC_NETWORK,subnet=GENERAL_PURPOSE_SUBNET \
--network-interface=nic-type=NIC_TYPE,queue-count=QUEUES,network=ULL_VPC_NETWORK,subnet=ULL_SUBNET_1,no-address,igmp-query=IGMP_QUERY_V2 \
--network-interface=nic-type=NIC_TYPE,queue-count=QUEUES,network=ULL_VPC_NETWORK,subnet=ULL_SUBNET_2,no-address,igmp-query=IGMP_QUERY_V2
다음 값을 바꿉니다.
ZONE: 인스턴스를 만들 영역INSTANCE_NAME: 인스턴스 이름입니다.MACHINE_TYPE: 인스턴스의 U4P 또는 U4C 머신 유형IMAGE_PROJECT: 이미지 프로젝트 미리보기 중에 테스트하려면 Google에서 제공하는 이미지 프로젝트를 사용하세요. U4 머신 유형의 운영체제 지원을 참고하세요.IMAGE_NAME: 이미지 이름입니다. 프리뷰 중에 테스트하려면 Google에서 제공하는 이미지를 사용하세요. U4 머신 유형의 운영체제 지원을 참고하세요.NIC_TYPE: 사용할 네트워크 인터페이스 유형입니다. 인스턴스를 만들려는 특정 영역에 지원되는 네트워크 인터페이스 유형을 사용합니다.us-south1-d에IDPF을 지정합니다.us-south1-e에GVNIC을 지정합니다.
QUEUES: 네트워크에서 패킷을 처리하는 수신 및 전송 큐의 수입니다.GVNIC의 경우queue-count필드를 포함하고 XDP 지원을 위해32값을 지정해야 합니다.IDPF의 경우 명령어에서queue-count=QUEUES을 생략합니다.
GENERAL_PURPOSE_VPC_NETWORK,GENERAL_PURPOSE_SUBNET: 인스턴스의nic0인터페이스를 연결할 VPC 네트워크 및 서브넷ULL_VPC_NETWORK: 비nic0인터페이스를 연결할 ULL VPC 네트워크ULL_SUBNET_1:nic1인터페이스를 연결할 ULL VPC 네트워크의 서브넷ULL_SUBNET_2:nic2인터페이스를 연결할 ULL VPC 네트워크의 서브넷
ULL 유니캐스트 트래픽의 비nic0 인터페이스 라우팅 구성
기본적으로 인스턴스는 직접 연결된 서브넷 외부의 모든 대상으로 트래픽을 전송하기 위해 nic0 인터페이스와 연결된 기본 경로를 사용합니다. 자세한 내용은 다중 네트워크 인터페이스 개요를 참고하세요.
인스턴스의 nic1 및 nic2 인터페이스가 ULL 유니캐스트 트래픽을 성공적으로 보내고 받으려면 게스트 OS에서 소스 기반 정책 라우팅을 구성해야 합니다. 이 구성을 사용하면 이그레스 패킷이 올바른 인터페이스를 통해 나가고 트래픽이 한 인터페이스로 들어가지만 nic0를 통해 나가려고 하는 비대칭 라우팅을 방지할 수 있습니다.
정책 라우팅을 구성하는 방법의 예는 추가 네트워크 인터페이스의 라우팅 구성 튜토리얼의 정책 라우팅 구성을 참고하세요.
인스턴스를 ULL 멀티캐스트 소비자로 구성
이 섹션에서는 기존 ULL 인스턴스를 멀티캐스트 소비자로 구성하는 방법을 설명합니다.
기존 ULL 인스턴스에서 IGMP 쿼리 사용 설정
인스턴스를 만들 때 IGMP를 사용 설정하지 않은 경우 이 섹션에 설명된 대로 기존 인스턴스에서 사용 설정할 수 있습니다.
gcloud
기존 ULL 인스턴스에서 IGMP 쿼리를 사용 설정하려면 compute instances network-interfaces update 명령어를 사용합니다.
멀티캐스트 트래픽을 수신하려는 각 네트워크 인터페이스에 대해 다음 명령어를 반복합니다.
gcloud compute instances network-interfaces update INSTANCE_NAME \
--zone=ZONE \
--network-interface=NETWORK_INTERFACE_NAME \
--igmp-query=IGMP_QUERY_V2
다음 값을 바꿉니다.
INSTANCE_NAME: 인스턴스 이름입니다.ZONE: 인스턴스의 영역NETWORK_INTERFACE_NAME: IGMP 쿼리를 사용 설정할 네트워크 인터페이스의 이름입니다. Google Cloud에서 형식은nicNUMBER입니다(예:nic0,nic1,nic2).
게스트 OS에서 IGMPv2 설정
인스턴스의 게스트 OS에서 IGMPv2를 설정하려면 다음 단계를 따르세요.
SSH를 사용하여 인스턴스에 연결합니다.
다음 명령어를 실행하고 멀티캐스트 트래픽을 수신할 네트워크 인터페이스의 기기 이름을 확인합니다.
sudo ifconfig
해당하는 각 네트워크 인터페이스에 대해 다음 명령어를 실행하여 IGMPv2를 강제 적용합니다.
sudo -i echo "2" > /proc/sys/net/ipv4/conf/NETWORK_INTERFACE_DEVICE_NAME/force_igmp_version
NETWORK_INTERFACE_DEVICE_NAME을 네트워크 인터페이스의 기기 이름(예:eth0,eth1,eth2)으로 바꿉니다.
역방향 경로 필터링 (rp_filter) 구성
다중 NIC 인스턴스와 같은 경우 역경로 필터링 (rp-filter)에 의한 엄격한 소스 유효성 검사로 인해 적법한 멀티캐스트 패킷이 삭제될 수 있습니다. 이러한 상황을 방지하려면 멀티캐스트 트래픽을 수신하는 비nic0 네트워크 인터페이스에서 소스 유효성 검사를 완화하거나 사용 중지하도록 역방향 경로 필터링을 구성하면 됩니다.
예를 들어 다음 명령어는 rp_filter을 0로 설정하여 eth1 및 eth2에서 소스 유효성 검사를 사용 중지하도록 역방향 경로 필터링을 구성합니다.
sudo sysctl -w net.ipv4.conf.all.rp_filter=0 sudo sysctl -w net.ipv4.conf.eth1.rp_filter=0 sudo sysctl -w net.ipv4.conf.eth2.rp_filter=0
rp_filter에 관한 자세한 내용은 Linux 커널 문서의 IP Sysctl을 참고하세요.
네트워크 드라이버의 링 버퍼 사이즈 증가
이 섹션에서는 인스턴스에서 네트워크 드라이버의 링 버퍼 사이즈를 늘리는 방법을 설명합니다.
높은 수준의 트래픽을 수신하는 멀티캐스트 소비자의 경우 패킷 손실을 방지하기 위해 네트워크 드라이버의 링 버퍼 사이즈를 2048 값으로 늘립니다. 멀티캐스트 트래픽을 수신하는 각 네트워크 인터페이스에 대해 이 작업을 실행합니다.
nic1 및 nic2을 구성하는 다음 명령어 예시를 참고하세요.
sudo ethtool -G eth1 rx 2048 tx 2048 sudo ethtool -G eth2 rx 2048 tx 2048
ULL 멀티캐스트 연결을 테스트하기 위한 명령어 예시
이 섹션에서는 iperf 도구를 사용하여 애플리케이션 워크로드를 시작하지 않고 멀티캐스트 트래픽을 테스트하기 위한 명령어 예시를 제공합니다. 이 섹션의 단계에서는 ULL 솔루션 구성 개요에 설명된 멀티캐스트 구성이 완료되어야 합니다.
멀티캐스트 프로듀서에서 ULL 멀티캐스트 트래픽 전송
SSH를 사용하여 인스턴스에 연결합니다.
아직 설치하지 않았다면
iperf를 설치합니다.iperf3는 멀티캐스트를 지원하지 않습니다. 다음 명령어는iperf2을 설치하는iperf를 사용합니다.sudo yum install iperf
멀티캐스트 그룹 IP 주소로 멀티캐스트 트래픽을 전송하려면 다음 명령어를 실행합니다.
iperf -c MULTICAST_GROUP_ADDRESS%NIC -p 1234 -l 512 -i 1 -u -b 1000pps -t 999999 -B NIC_IP_ADDRESS
다음 값을 바꿉니다.
MULTICAST_GROUP_ADDRESS: 멀티캐스트 그룹 IP 주소NIC네트워크 인터페이스 기기 이름(예:eth1또는eth2)NIC_IP_ADDRESS지정한 NIC에 할당된 IP 주소
그룹에 참여하고 멀티캐스트 소비자로부터 ULL 멀티캐스트 트래픽 수신
SSH를 사용하여 인스턴스에 연결합니다.
아직 설치하지 않았다면
iperf를 설치합니다.sudo yum install iperf
멀티캐스트 그룹에 참여하고 수신하는 트래픽을 로깅하려면 다음 명령어를 실행합니다.
iperf -s -p 1234 -B MULTICAST_GROUP_ADDRESS%NIC -l 512 -u -i 1
다음 값을 바꿉니다.
MULTICAST_GROUP_ADDRESS멀티캐스트 그룹 IP 주소NIC네트워크 인터페이스 기기 이름(예:eth1또는eth2)
예를 들어 다음 명령어는 IP 주소가
224.1.0.176인 그룹에 참여하여 최대 512바이트의 패킷을 수신하고 수신된 트래픽을 로깅합니다.iperf -s -p 1234 -B 224.1.0.176%eth1 -l 512 -u -i 1
다음 단계
- ULL 컴퓨팅 인스턴스에서 busy polling을 사용 설정하고 Onload 기능을 테스트하려면 Onload 사용을 참고하세요.
- 인스턴스 시스템 시계를 호스트 서버의 실제 NIC 시계와 동기화하려면 정확한 시간 구성을 참고하세요.