owned this note
owned this note
Published
Linked with GitHub
# 2024-10-29
## Cloud SQL
* 直接搜尋 **SQL**, 可能會需要開啟相關API

* 常見的SQL (使用MySQL)

* Edition preset 選擇開發環境

* Region
**Multiple zones 可靠度較高, 當zoneA掛了還有其他zone 的能使用**

* 啟動API
**到APIs & Services**

**搜尋SQL**

**啟用**

* 直接使用Cloud Shell 來進行客戶端的操作
1. 安裝 MySQL 客戶端 `sudo apt install -y mysql-client`
2. 連線指令 `gcloud sql connect mydb --user=root --quiet`
* 把 Public IP 關掉 只開 Private IP

* 開一台VM 安裝 MySQL-Client 連進去
`sudo apt install -y apache2`
`sudo apt install -y php libapache2-mod-php php-mysql`
`mysql -h 10.0.0.3 -u root -p`
* 編輯資料庫內容
```sql=
mysql> create database testdb;
Query OK, 1 row affected (0.01 sec)
mysql> use testdb;
Database changed
mysql> create table addrbook(name varchar(50) not null, phone varchar(100));
Query OK, 0 rows affected (0.03 sec)
mysql> insert into addrbook(name, phone) values ("Tom", "0912345678");
Query OK, 1 row affected (0.03 sec)
mysql> insert into addrbook(name, phone) values ("Marry", "0987654321");
Query OK, 1 row affected (0.00 sec)
mysql> select * from addrbook;
+-------+------------+
| name | phone |
+-------+------------+
| Tom | 0912345678 |
| Marry | 0987654321 |
+-------+------------+
2 rows in set (0.00 sec)
```
* VM 寫PHP 網頁
```php=
<?php
$servername="10.0.0.3";
$username="root";
$password="12345678";
$dbname="testdb";
$conn = new mysqli($servername, $username, $password, $dbname);
if($conn->connect_error){
die("connection failed: " . $conn->connect_error);
}
else{
echo "connect OK!" . "<br>";
}
$sql="select name,phone from addrbook";
$result=$conn->query($sql);
if($result->num_rows>0){
while($row=$result->fetch_assoc()){
echo "name: " . $row["name"] . "\tphone: " . $row["phone"] . "<br>";
}
} else {
echo "0 record";
}
?>
```

## Load Balancer

1. unmanaged
**先建好機器, 之後在建Load Balancer**
2. managed
**自動擴/縮容, 不須預先建立機器**
**本周實作unmanaged 的方式**
* 開兩台VM
**兩台的zone 在同一區, 並開http 和啟動腳本**
```bash
#! /bin/bash
apt update
apt -y install apache2
cat <<EOF > /var/www/html/index.html
<html><body><p>Linux startup script added directly. $(hostname -f) </p></body></html>
```
**連線畫面**

* 建立Instance groups


* 建立Load Balancer

**http 連線**

**會從外部連進去**

**只跑在單一Region**

**Load Balancer 的前端, 完成之後按 "Done"**

**Load Balancer 的後端**

**後端設定**

**健檢, 預設值建立 (底下兩台機器其中一台掛了,就不會再把流量導到掛的那台)**

**建立完成後, 連過去看**

* 壓力測試
**使用 `siege` 去測試**
