สิ่งที่ต้องเตรียม
เซิร์ฟเวอร์
- เซิร์ฟเวอร์หลัก (Master Server): 1 เครื่อง (สำหรับ Load Balancer และฐานข้อมูล)
 - เซิร์ฟเวอร์ Ollama: 3 เครื่องขึ้นไป (สำหรับการประมวลผลภาษา)
 - เซิร์ฟเวอร์ Open WebUI: 2 เครื่องขึ้นไป (สำหรับส่วนติดต่อผู้ใช้)
 
สเปกเซิร์ฟเวอร์
- ระบบปฏิบัติการ: Ubuntu 20.04 LTS หรือใหม่กว่า
 - CPU: 16 cores ขึ้นไป (สำหรับแต่ละเครื่อง)
 - RAM: 64 GB ขึ้นไป (สำหรับแต่ละเครื่อง)
 - Storage: SSD 500 GB ขึ้นไป (สำหรับแต่ละเครื่อง)
 
ซอฟต์แวร์ที่จำเป็น
- Docker และ Docker Compose
 - Nginx (สำหรับ Load Balancer)
 - Redis (สำหรับจัดการเซสชันผู้ใช้)
 - PostgreSQL หรือ MongoDB (สำหรับเก็บประวัติการสนทนา)
 
ขั้นตอนการติดตั้ง
1. ติดตั้ง Docker และ Docker Compose
ทำบนทุกเครื่อง:
# อัปเดตระบบ
sudo apt-get update && sudo apt-get upgrade -y
# ติดตั้ง Docker
sudo apt-get install docker.io -y
# ติดตั้ง Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d')" /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
        2. ติดตั้ง Redis และฐานข้อมูล (PostgreSQL)
ทำบนเครื่อง Master Server:
# ติดตั้ง Redis
sudo apt-get install redis-server -y
# ติดตั้ง PostgreSQL
sudo apt-get install postgresql postgresql-contrib -y
# สร้างฐานข้อมูลและผู้ใช้
sudo -u postgres psql
CREATE DATABASE ollama_db;
CREATE USER your_db_user WITH PASSWORD 'your_db_password';
GRANT ALL PRIVILEGES ON DATABASE ollama_db TO your_db_user;
        3. ติดตั้ง Ollama (Distributed Model Serving)
ทำบนเครื่อง Ollama ทุกเครื่อง:
# ดาวน์โหลดและติดตั้ง Ollama
git clone https://github.com/your-repo/ollama.git
cd ollama
# สร้างไฟล์ docker-compose.yml
nano docker-compose.yml
        เพิ่มคอนฟิกต่อไปนี้ใน docker-compose.yml:
version: '3.8'
services:
  ollama:
    image: your-ollama-image:latest
    container_name: ollama
    ports:
      - "8001:8000"  # เปลี่ยนพอร์ตตามเครื่อง (8002, 8003 สำหรับเครื่องอื่น)
    environment:
      - REDIS_HOST=redis://<MASTER_SERVER_IP>:6379
      - DB_HOST=<MASTER_SERVER_IP>
      - DB_USER=your_db_user
      - DB_PASSWORD=your_db_password
      - MODEL_SERVER=<MODEL_SERVER_IP>:9000  # ชี้ไปที่ Model Server
    networks:
      - ollama_network
networks:
  ollama_network:
    driver: bridge
        รัน Ollama:
docker-compose up -d
        4. ติดตั้ง Model Server
ทำบนเครื่องที่คุณเลือกเป็น Model Server:
# ดาวน์โหลดและติดตั้ง Model Server
git clone https://github.com/your-repo/model-server.git
cd model-server
# สร้างไฟล์ docker-compose.yml
nano docker-compose.yml
        เพิ่มคอนฟิกต่อไปนี้ใน docker-compose.yml:
version: '3.8'
services:
  model_server:
    image: your-model-server-image:latest
    container_name: model_server
    ports:
      - "9000:9000"
    volumes:
      - ./models:/app/models  # โฟลเดอร์สำหรับเก็บโมเดล
    networks:
      - model_network
networks:
  model_network:
    driver: bridge
        รัน Model Server:
docker-compose up -d
        5. ติดตั้ง Open WebUI
ทำบนเครื่อง Open WebUI ทุกเครื่อง:
# ดาวน์โหลดและติดตั้ง Open WebUI
git clone https://github.com/your-repo/open-webui.git
cd open-webui
# สร้างไฟล์ docker-compose.yml
nano docker-compose.yml
        เพิ่มคอนฟิกต่อไปนี้ใน docker-compose.yml:
version: '3.8'
services:
  webui:
    image: your-webui-image:latest
    container_name: webui
    ports:
      - "8080:80"  # เปลี่ยนพอร์ตตามเครื่อง (8081, 8082 สำหรับเครื่องอื่น)
    environment:
      - OLLAMA_HOST=<MASTER_SERVER_IP>
      - REDIS_HOST=redis://<MASTER_SERVER_IP>:6379
      - DB_HOST=<MASTER_SERVER_IP>
      - DB_USER=your_db_user
      - DB_PASSWORD=your_db_password
    networks:
      - webui_network
networks:
  webui_network:
    driver: bridge
        รัน Open WebUI:
docker-compose up -d
        6. ติดตั้ง Load Balancer ด้วย Nginx
ทำบนเครื่อง Master Server:
# ติดตั้ง Nginx
sudo apt-get install nginx -y
# สร้างไฟล์คอนฟิก Nginx
sudo nano /etc/nginx/conf.d/load-balancer.conf
        เพิ่มคอนฟิกต่อไปนี้ในไฟล์ load-balancer.conf:
upstream ollama_servers {
    server <OLLAMA_SERVER_1_IP>:8001;
    server <OLLAMA_SERVER_2_IP>:8002;
    server <OLLAMA_SERVER_3_IP>:8003;
}
upstream webui_servers {
    server <WEBUI_SERVER_1_IP>:8080;
    server <WEBUI_SERVER_2_IP>:8081;
}
server {
    listen 80;
    server_name your-domain.com;
    location /ollama {
        proxy_pass http://ollama_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    location / {
        proxy_pass http://webui_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
        รีสตาร์ท Nginx:
sudo systemctl restart nginx
    7. การจัดการเซสชันผู้ใช้
- Redis: ใช้เก็บ session ID ของผู้ใช้
 - ฐานข้อมูล: ใช้เก็บประวัติการสนทนา โดยใช้คอลัมน์ user_id และ session_id เพื่อเชื่อมโยงประวัติ
 
สรุป
ระบบนี้ประกอบด้วย:
- Ollama: 3 เครื่องขึ้นไป สำหรับการประมวลผลภาษา
 - Open WebUI: 2 เครื่องขึ้นไป สำหรับส่วนติดต่อผู้ใช้
 - Load Balancer: 1 เครื่อง สำหรับกระจายโหลด
 - Redis และฐานข้อมูล: 1 เครื่อง สำหรับจัดการเซสชันและเก็บประวัติการสนทนา
 - Model Server: 1 เครื่อง สำหรับให้บริการโมเดลภาษา
 
ด้วยการออกแบบนี้ คุณจะสามารถรองรับผู้ใช้งาน 1,000 คน และให้ผู้ใช้สามารถคุยเรื่องเดิมได้แม้เปลี่ยนเครื่อง
 ![]()