คู่มือการติดตั้ง AI Ollama + Open WebUI + Load Balancer

คู่มือการติดตั้ง AI Ollama + Open WebUI + Load Balancer

สิ่งที่ต้องเตรียม

เซิร์ฟเวอร์

  • เซิร์ฟเวอร์หลัก (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 คน และให้ผู้ใช้สามารถคุยเรื่องเดิมได้แม้เปลี่ยนเครื่อง

Loading