kafka

카프카 환경 구성

25G 2023. 10. 19. 17:52

AWS 실제 환경 구성

카프카를 실제 운영하는 환경에서는 서비스의 안정성이 최우선이므로 단독 서버 형태로 운영하는 경우는 거의 없고, 대부분 이중화 또는 클러스터 형태로 구성합니다.

  • 주키퍼의 경우 최소수량인 ec2 인스턴스 3대로 구성하고, 카프카의 경우도 최소 수량인 ec2 인스턴스 3대로 구성.
  • 일반적인 운영 환경에서는 배포서버 1대 포함 프라이븟 도메인을 위한 도메인 표시.

환경구성 실습

  • aws가입/로그인해서 ec2사용 클릭
  • 위 버튼을 통해서 AMI선택화면이 나오는데 이는 인스턴스의 운영체제를 선택하는 화면입니다.
  • Amazon Linux 2AMI 선택.
  • 선택을 하면 인스턴스 유형 선택화면이 나옵니다.
    실습과정에선 ec2하나 이상의 애플리케이션을 구동하게 되므로 4GB 용량의 메모리가 지원되는 t2.medium을 선택하고 나서 다음:인스턴스 세부 정보 구성 을 클릭합니다. 기본설정으로 검토및 시작 버튼이 파란색으로 표시되어 있어 무심코 클릭하기 쉬운데, 다음과같은 상세설정을 해야하므로 주의해야합니다.
  • 인스턴스 세부 정보 구성화면으로 가면 동일한 타입의 인스턴스를 7개를 생성해야하므로 인스턴스개수를 7로 변경하고 다음:스토리지 추가단계로 넘어갑니다. 다른설정은 변경할필요 없습니다.
  • 5.스토리지 추가 설정에서 변경사항없이 다음
  • 6.태그추가 설정에서 변경사항 없이 다음
  • 7.보안그룹 구성
    보안 그룹 구성 화면입니다.EC2 인스턴스 생성 후 ol무 제한 없이 불특정한 곳 에서 해당 EC2 인스턴스에 접근한다면 보안에 매우 취약할 수 있습니다. 따라서 해당 EC2 인스턴스에 접근할 수 있는 곳을 ‘나의 집’ 등과 같이 제한한다면 매우 높은 수준의 보안을 얻을 수 있습니다.
    실습환경 구성을 위해 유형은 모든 트래픽과 모든 tcp로 포트범위는 0~65525로 설정.
  • 하지만 운영환경에서는 보안 강화를 위해 반드시 포트별로 출발지를 제한해 설정*
  • 검토
  1. 첫번째로 aws상의 ec2 인스턴스끼리 서로 통신할 수 있도록 모든 트래픽 유형의 소스는 사용자 지정으로 선택 172.31.0.0./16을 허용하도록 입력.
  2. 31.0.0./16은 기본 vpc가 생성된 기준의 cidr이므로 만약 별도록 vpc와 서브넷을 설정한 분들은 각자 구성한 cidr을 추가
  3. 두번째로 본인의 로컬 환경에서 ec2로 접근해야 하므로, 규칙 추가르 클릭해서 유형을 추가한 후 유형을 모든 tcp로 변경하고소스는 내 ip를 선택해서 마무리한 뒤 화면 하단의 검토 및 시작을 클릭합니다.

키페어 생성

리눅스 서버는 일반적으로 계정/비밀번호를 입력해 접근하는 데 반해, EC2 인스턴스는 키 페어를 이용해 접근합니다. 최초 AWS 계정을 생성한 경우에는 아직 만들어놓은 키 페어가 없으니 먼저 키 페어를 생성해야 합니다.그림 2-7과 같이 키 페어 이름은keypair로 입력한 후 키 페어 다운로드 버튼을 클릭합니다. 로컬 경로에 keypair.pem 파일이 다운로드될 것입니 다. 해당 키 페어를 분실하면 이후에 EC2에 접근하기 곤란하므로 파일은 반드시 잘 관리하 기 바랍니다.키 페어를 모두 내려받으면 그림과 같이 인스턴스 시작 버튼이 활성화될 것입니 다. 이제 인스턴스 시작 버튼을 클릭하면 앞서 설정한 내용을 바탕으로 EC2 인스턴스 생성이 시작되며 조금 지나면 총 7개의 EC2 인스턴스가 만들어질 것입니다

키페어 권한 변경

  • chmod 600 keypair.pem

로컬에서 aws클라우드에 접근할땐 퍼블릭ip주소로 들어가고 aws클라우드끼리 통신은 프라이빗ip주소로통신합니다

ec2접속

ssh -i keypalr.pem -l ec2-user 퍼블릭아이피

로드벨런스없이 dns설정

/etc/hosts 파일을 다음과 같은형식으로 수정

[프라이빗ip] [dns 이름] [ec2인스턴스 명]
172.31.3.209 ansible01.foo.bar ansible01 
172.31.0.186 zk01.foo.bar zk01 
172.31.12.195 zk02.foo.bar zk02 
172.31.3.173 zk03.too.bar zk03 
172.31.5.59 kafka01.foo.bar kafka01 
172.31.11.46 kafka02.to o .bar kafka02 
172.31.8. 78 kafka03.foo.bar kafka03

위아이피는 aws ec2의 프라이빗주소를 입력해야 합니다.

잘 작동하는지 체크

ping -c 2 pete「-zk01.foo.bar

카프카 클러스터 구성

배포자동화 도구 중 하나인 앤서블이라는 도구를 이용해 주키퍼와 카프카를 설치합니다.

sudo amazon-llnux-extras in s ta ll -y ansible2
sudo yum install -y git
git clone https://glthub.com /onlybooks/kafka2

ec2서버로 키패어 가져오기

scp -1 keypair.pem keypair.pem ec2-user(ai3.125.20.117:~

가저온 키페어 권한 변경

chmod 600 keypair.pem
ssh-agent bash
ssh-add keypair.pem

ssh keygen을 이용해서 자동로그인설정을 해놓으면 이후에 편합니다.

주키퍼 설치

cd kafka2/chapter2/ansible_playbook
anslble_playbook]$ anslble-playbook -I hosts zookeeper.yml
sudo systemctl status zookeeper-server //위명령어 실행후 해당명령어로 실행여부 체크

카프카 설치

ansible-playbook -i hosts kafka.yml
sudo systemctl status kafka-server //위명령어 실행후 해당명령어로 실행여부 체크