Server Klien NoSQL akan mengonfigurasi dan membuat dua instance Compute Engine:
- Server — yang akan menjalankan MongoDB
- Klien — yang akan menjalankan aplikasi go kustom yang berkomunikasi dengan MongoDB, lalu menampilkan API tempat Anda menggunakan data dari MongoDB
Mulai
Klik link berikut untuk mendapatkan salinan kode sumber di Cloud Shell. Setelah ada, satu perintah akan menjalankan salinan aplikasi yang berfungsi di project Anda..
Komponen Server Klien NoSQL
Arsitektur Server Klien NoSQL memanfaatkan salah satu produk utama. Bagian berikut menyoroti produk tersebut, beserta informasi selengkapnya, termasuk link ke video terkait, dokumentasi produk, dan panduan interaktif.Skrip
Skrip penginstalan menggunakan file yang dapat dieksekusi yang ditulis di alat CLI Terraform dan go
untuk mengambil project kosong dan menginstal aplikasi di dalamnya. Output harus berupa aplikasi yang berfungsi dan URL untuk alamat IP load balancing.
./main.tf
Aktifkan Layanan
Layanan Google Cloud dinonaktifkan dalam project secara default. Untuk menggunakan salah satu solusi di sini, kita harus mengaktifkan hal berikut:
- Compute Engine — virtual machine dan jaringan
variable "gcp_service_list" {
description = "The list of apis necessary for the project"
type = list(string)
default = [
"compute.googleapis.com",
]
}
resource "google_project_service" "all" {
for_each = toset(var.gcp_service_list)
project = var.project_number
service = each.key
disable_dependent_services = false
disable_on_destroy = false
}
Buat aturan Firewall
Membuat aturan yang membuka port 80 pada firewall, lalu menerapkannya ke mesin mana pun yang diberi label http-server
resource "google_compute_firewall" "default-allow-http" {
name = "deploystack-allow-http"
project = var.project_number
network = "projects/${var.project_id}/global/networks/default"
allow {
protocol = "tcp"
ports = ["80"]
}
source_ranges = ["0.0.0.0/0"]
target_tags = ["http-server"]
}
Membuat Instance Server
Menjalankan VM yang akan bertindak sebagai server, dan menyajikan MongoDB
# Create Instances
resource "google_compute_instance" "server" {
name = "server"
zone = var.zone
project = var.project_id
machine_type = "e2-standard-2"
tags = ["http-server"]
boot_disk {
auto_delete = true
device_name = "server"
initialize_params {
image = "family/ubuntu-1804-lts"
size = 10
type = "pd-standard"
}
}
network_interface {
network = "default"
access_config {
// Ephemeral public IP
}
}
metadata_startup_script = <<SCRIPT
apt-get update
apt-get install -y mongodb
service mongodb stop
sed -i 's/bind_ip = 127.0.0.1/bind_ip = 0.0.0.0/' /etc/mongodb.conf
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 27017
service mongodb start
SCRIPT
depends_on = [google_project_service.all]
}
Membuat Instance Klien
Menjalankan VM yang akan bertindak sebagai klien, dan menggunakan data dari MongoDB
resource "google_compute_instance" "client" {
name = "client"
zone = var.zone
project = var.project_id
machine_type = "e2-standard-2"
tags = ["http-server", "https-server"]
boot_disk {
auto_delete = true
device_name = "client"
initialize_params {
image = "family/ubuntu-1804-lts"
size = 10
type = "pd-standard"
}
}
network_interface {
network = "default"
access_config {
// Ephemeral public IP
}
}
metadata_startup_script = <<SCRIPT
add-apt-repository ppa:longsleep/golang-backports -y && \
apt update -y && \
apt install golang-go -y
mkdir /modcache
mkdir /go
mkdir /app && cd /app
curl https://raw.githubusercontent.com/GoogleCloudPlatform/golang-samples/main/compute/quickstart/compute_quickstart_sample.go --output main.go
go mod init exec
GOPATH=/go GOMODCACHE=/modcache GOCACHE=/modcache go mod tidy
GOPATH=/go GOMODCACHE=/modcache GOCACHE=/modcache go get -u
sed -i 's/mongoport = "80"/mongoport = "27017"/' /app/main.go
echo "GOPATH=/go GOMODCACHE=/modcache GOCACHE=/modcache HOST=${google_compute_instance.server.network_interface.0.network_ip} go run main.go"
GOPATH=/go GOMODCACHE=/modcache GOCACHE=/modcache HOST=${google_compute_instance.server.network_interface.0.network_ip} go run main.go &
SCRIPT
depends_on = [google_project_service.all]
}
Kesimpulan
Setelah dijalankan, sekarang Anda akan memiliki API server klien menggunakan MongoDB yang berjalan di dua instance Compute Engine. Selain itu, Anda harus memiliki semua kode untuk dimodifikasi atau memperluas solusi ini agar sesuai dengan lingkungan Anda.