• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

3 Tier App Deployment on AWS EC2

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,481
Баллы
155
Mengikuti program AWS re/Start 11 adalah sebuah progress yang sangat signifikan. Berbekal dari materi yang diajarkan dan searching di Internet, saya mencoba untuk membuat proyek deployment pada akun AWS.
disclaimer: saya menggunakan AWS Management Console untuk melakukan proses deployment ini.

Arsitektur



Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Untuk arsitektur yang saya terapkan sama seperti pada gambar di atas. Sangat sederhana, tapi semua dilakukan dengan cara manual.

Step by Step


  1. Setup Networking
    Terdiri dari pembuatan VPC, Public Subnet dan Private Subnet, Route Table Untuk Public Subnet, Route Table untuk Private Subnet, Internet Gateway, dan NAT Gateway, Elastic IP, dan membuat Security Group.


  2. Setup 3 buah EC2 Instances
    Pembuatan EC2 Instance (VM) sebanyak 3 buah (1 untuk frontend, 1 untuk backend, dan 1 untuk database). FE ditaruh ke public subnet, sedangkan Backend dan DB ditaruh ke private subnet.


  3. Setup services di masing-masing Instances
    Terdiri dari instal seluruh library, konfigurasi services, dan memastikan bahwa services sudah bisa dipakai instance lain.
Setup Networking


  1. Saya menggunakan cara manual, pertama buat VPC. Pastikan pilih VPC Only. Untuk CIDR Block saya tidak terlalu saya atur, disini saya mencoba pakai yang biasanya banyak digunakan oleh orang, yaitu 10.0.0.0/16. yang berarti bahwa dari CIDR block tersebut mampu menampung 65.534 IP Addresses. Bisa dipecah lebih kecil agar komunikasi jaringan lebih efisien dengan pembuatan subnet dengan CIDR yang lebih tinggi daripada 16 agar tidak terjadi IP overlap.


  2. Setelah VPC telah terbentuk, buat dua subnet yaitu 10.0.1.0/24 untuk public subnet dan 10.0.2.0/24 untuk private subnet. Jika dihitung lagi, masing-masing subnet dapat menampung 251 IP Addresses karena total 256 dikurangi Network address (e.g. 10.0.1.0), Broadcast address (e.g. 10.0.1.255), DNS server (e.g. 10.0.1.2), Reserved for future use (e.g. 10.0.1.3), dan Default router (e.g. 10.0.1.1).


  3. Setelah subnet terbentuk selanjutnya adalah pembuatan Internet Gateway (IGW) dan NAT Gateway. Internet Gateway menampungkan EC2 Instance yang ada pada Public Subnet ke internet. Sedangkan NAT Gateway (diletakkan di Public Subnet) agar EC2 yang berada di Private Subnet juga mendapatkan akses ke internet. Setelah itu, buat Route Table. Route Table berfungsi seperti router untuk menyambungkan subnet ke Internet Gateway/NAT Gateway.


  4. Alokasikan Elastic IP ke VPC - public subnet yang telah dibuat, agar setiap kali instance Server FE restart tidak mengalami perubahan IP, Jangan lupa untuk attach IP ke VPC, serta public subnet. Sedangkan komunikasi antar Instance bisa menggunakan IP Private yang sudah dibuat dari masing-masing Subnet.


  5. Setting Security Group untuk Server Frontend yang ada di public subnet, Security yang sesuai best practice adalah sebagai berikut:

- allow SSH hanya untuk IP Public komputer kita
- allow HTTP/S untuk anywhere IPv4 (0.0.0.0/0)

Sedangkan untuk Server Backend yang terdapat di private subnet, sebagai berikut:


- allow SSH untuk CIDR public subnet (10.0.1.0/14)
- allow MongoDB port (27017) untuk CIDR public subnet (10.0.1.0/14)
- allow Backend App port (5000) untuk CIDR public subnet (10.0.1.0/14)

Seperti sifatnya, Security Group hanya akan allow apa yang kita definisikan, selebihnya disallow semuanya. Oke, sampai sini sepertinya sudah looks good. Lanjut setup EC2 Instancenya.

Setup EC2 Instances (3 buah)


  1. Buat instance edit pada Network jangan sampai salah (Frontend-Server) ditaruh ke Public Subnet pada VPC yang telah dibuat. Atur Security Group, agar sesuai dengan diperuntukkan Frontend-Server. Jangan lupa juga SSH Keynya. Sisanya biarkan default saja.


  2. Buat lagi instance untuk (Backend-Server), kali ini taruh ke Private Subnet pada VPC yang telah dibuat. Atur Security Group agar sesuai dengan Backend. Jangan lupa juga SSH Keynya juga disamakan dengan Frontend.


  3. Buat sekali lagi untuk DB serta atur Security Group agar sesuai. Jangan lupa juga SSH Keynya juga disamakan dengan Frontend.

Cukup melelahkan ya, tak terhitung berapa kali klik-klik ini tadi. Next kita akan bahas soal Terraform, agar provision infrastructure di AWS bisa kita optimasi, minim kelalaian, dan bisa versioned control. Ok sekarang lanjut aja dulu.

Setup Services


Saya mengasumsikan bahwa instances sudah terbuat, kamu bisa remote frontend server dari komputer lokal, sedangkan pada backend server dan database server kita remote melalui frontend server (jadi seperti nested ssh). Berikut merupakan list perintah yang harus dilakukan untuk menyiapkan services. Perintah-perintah di bawah ini sebenarnya dapat diotomasi dengan menggunakan bash script, next time akan saya buatkan bash script agar kita melakukan banyak operasi dengan hanya menjalankan satu file .sh saja.

  • MongoDB Server

- sudo nano /etc/yum.repos.d/mongodb-org-8.0.repo
- sudo yum install -y mongodb-org
- sudo nano /etc/mongod.conf
- sudo systemctl enable mongod
- sudo systemctl start mongod
- sudo systemctl status mongod

Untuk lebih lengkapnya bisa dikuti petunjuk dari

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Untuk konfigurasi mongod.conf yang perlu diubah adalah pada bagian yang menunjukkan 127.0.0.1 diubah menjadi 0.0.0.0. Agar service dapat diakses dari luar localhost. Jangan lupa untuk melakukan restart.

  • Backend Server

- sudo yum update -y
- sudo yum install git -y
- sudo yum install nodejs20 -y
- git clone

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


- cd textlist-be
- npm install
- cp .env.example .env
- nano .env
- npm run seed
- npm run dev
  • Frontend Server

- sudo yum update -y
- sudo yum install git -y
- sudo yum install nodejs20 -y
- git clone

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


- cd textlist-fe
- npm install
- cp .env.example .env
- nano .env

Pada .env yang perlu diubah adalah alamat ip host, sesuaikan dengan ip telah diassign secara otomatis. Untuk backend server gunakan ip private, sedangkan frontend server gunakan ip public. Proses seed yang dilakukan pada server backend untuk membuat database, collection, dan generate data dummy.

Untuk keperluan troubleshoot, hal yag perlu dicheck adalah memastikan bahwa service yang sudah di-serve itu telah diekspos. Untuk melakukan itu, dapat menggunakan perintah sudo netstat -tulnp | grep {port}.
Selain itu, untuk memastikan bahwa komunikasi antar instance sudah connect dapat dicheck melalui telnet. Contoh jika aku memeriksa koneksi backend ke database, saya bisa menjalankan perintah telnet {ip_mongodb_server} 27017 dari ssh backend-server. Begitu juga dari frontend, maka aku harus memerika dengan telnet {ip_mongodb_server} 5000 dari ssh frontend. 27017 adalah port mongoDB, sedangkan 5000 adalah port backend server. Namun, sebelum menggunakan telnet, harus menginstall dulu sudo yum install -y telnet.

Saya asumsikan bahwa semua services sudah connect dan bisa jalan. Maka anda telah berhasil melakukan 3 tier app deployment ke AWS EC2. Selamat!


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 
Вверх Снизу