카프카를 실제 운영하는 환경에서는 서비스의 안정성이 최우선이므로 단독 서버 형태로 운영하는 경우는 거의 없고, 대부분 이중화 또는 클러스터 형태로 구성합니다.
aws가입/로그인해서 ec2사용 클릭
위 버튼을 통해서 AMI선택화면이 나오는데 이는 인스턴스의 운영체제를 선택하는 화면입니다.
Amazon Linux 2AMI 선택.
선택을 하면 인스턴스 유형 선택화면이 나옵니다.
실습과정에선 ec2하나 이상의 애플리케이션을 구동하게 되므로 4GB 용량의 메모리가 지원되는 t2.medium을 선택하고 나서 다음:인스턴스 세부 정보 구성 을 클릭합니다. 기본설정으로 검토및 시작 버튼이 파란색으로 표시되어 있어 무심코 클릭하기 쉬운데, 다음과같은 상세설정을 해야하므로 주의해야합니다.
-인스턴스 세부 정보 구성화면으로 가면 동일한 타입의 인스턴스를 7개를 생성해야하므로 인스턴스개수를 7로 변경하고 다음:스토리지 추가단계로 넘어갑니다. 다른설정은 변경할필요 없습니다.
5.스토리지 추가 설정에서 변경사항없이 다음
6.태그추가 설정에서 변경사항 없이 다음
7.보안그룹 구성
보안 그룹 구성 화면입니다.EC2 인스턴스 생성 후 ol무 제한 없이 불특정한 곳 에서 해당 EC2 인스턴스에 접근한다면 보안에 매우 취약할 수 있습니다. 따라서 해당 EC2 인스턴스에 접근할 수 있는 곳을 ‘나의 집’ 등과 같이 제한한다면 매우 높은 수준의 보안을 얻을 수 있습니다.
실습환경 구성을 위해 유형은 모든 트래픽과 모든 tcp로 포트범위는 0~65525로 설정.
하지만 운영환경에서는 보안 강화를 위해 반드시 포트별로 출발지를 제한해 설정
검토
리눅스 서버는 일반적으로 계정/비밀번호를 입력해 접근하는 데 반해, EC2 인스턴스는 키 페어를 이용해 접근합니다. 최초 AWS 계정을 생성한 경우에는 아직 만들어놓은 키 페어가 없으니 먼저 키 페어를 생성해야 합니다.그림 2-7과 같이 키 페어 이름은keypair로 입력한 후 키 페어 다운로드 버튼을 클릭합니다. 로컬 경로에 keypair.pem 파일이 다운로드될 것입니 다. 해당 키 페어를 분실하면 이후에 EC2에 접근하기 곤란하므로 파일은 반드시 잘 관리하 기 바랍니다.키 페어를 모두 내려받으면 그림과 같이 인스턴스 시작 버튼이 활성화될 것입니 다. 이제 인스턴스 시작 버튼을 클릭하면 앞서 설정한 내용을 바탕으로 EC2 인스턴스 생성이 시작되며 조금 지나면 총 7개의 EC2 인스턴스가 만들어질 것입니다
로컬에서 aws클라우드에 접근할땐 퍼블릭ip주소로 들어가고 aws클라우드끼리 통신은 프라이빗ip주소로통신합니다
ssh -i keypalr.pem -l ec2-user 퍼블릭아이피
/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 //위명령어 실행후 해당명령어로 실행여부 체크