1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fagongzi-gateway

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
build.md 9.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 13.03.2025 10:28 9c7636b

Настройка окружения шлюза

Этот раздел поможет вам настроить окружение шлюза.

Подготовка

Etcd

В настоящее время для хранения метаданных используется Etcd. Для установки etcd обратитесь к окружению etcd.

Golang

Если вы хотите скомпилировать Gateway из исходного кода, вам потребуется окружение Golang. Требуется версия Go 1.11 и выше.

Сборка из исходного кода

  • Makefile

    Далее приведены команды, выполняемые в директории $GOPATH/src/github.com/fagongzi/gateway.

    • Сборка двоичного файла для текущей ОС.
    make release_version='версионная строка'
    • Сборка двоичного файла для конкретной ОС
    # Linux
    make release release_version='версионная строка'
    
    # Darwin (Mac OS X)
    make release_darwin release_version='версионная строка'
    • Упаковка проекта в образ Docker
    make docker release_version='версионная строка'
    • Упаковка проекта в образ Docker с пользовательским содержимым
    # для демонстрации, включая etcd, proxy, apiserver, ui
    make docker release_version='версионная строка'
    
    # только proxy
    make docker release_version='версионная строка' with=proxy
    
    # только etcd
    make docker release_version='версионная строка' with=etcd
    
    # apiserver с ui
    make docker release_version='версионная строка' with=apiserver
    • Для получения дополнительной информации о сборке
    make help

Компоненты Gateway

Gateway состоит из двух компонентов: ApiServer и Proxy.

  • ApiServer ApiServer предоставляет API для управления метаданными.* Proxy Proxy является бесостоятельным API-шлюзом, который обеспечивает непосредственный доступ клиентов.

ApiServer

ApiServer предоставляет сервис GRPC для управления метаданными шлюза.```bash $ ./apiserver --help Использование ./apiserver: -addr string Адрес точки входа клиента (по умолчанию "127.0.0.1:9091") -addr-store string Адрес хранилища (по умолчанию "etcd://127.0.0.1:2379") -crash string Файл логов аварийного отключения (по умолчанию "./crash.log") -discovery Публикация сервиса apiserver через discovery -log-file string Внешний файл логов. По умолчанию выводится в консоль. -log-level string Уровень логов, по умолчанию info (по умолчанию "info") -namespace string Пространство имён для изоляции окружения (по умолчанию "dev") -publish-lease int Период времени аренды публикации сервиса в секундах (по умолчанию 10) -publish-timeout int Период времени таймаута публикации сервиса в секундах (по умолчанию OnClickListener 30) -service-prefix string Префикс имени сервиса (по умолчанию "/services")

Параметр `discovery` используется для определения необходимости использования сервисного открытия для публикации внешних API, предоставляемых ApiServer.
Параметр `namespace` используется для изоляции нескольких окружений. Он должен совпадать с параметром `namespace` в `Proxy`.

## Прокси
Прокси — это единственный входной пункт для всех внутренних API, что является уровнем доступа к API.```bash
$ ./proxy --help
Использование ./proxy:
  -addr string
    	Адрес: входная точка запроса HTTP (по умолчанию "127.0.0.1:80")
  -addr-pprof string
    	Адрес: адрес pprof
  -addr-rpc string
    	Адрес: входная точка запроса менеджера (по умолчанию "127.0.0.1:9091")
  -addr-store string
    	Адрес: хранилище метаданных, поддерживающее etcd (по умолчанию "etcd://127.0.0.1:2379")
  -crash string
    	Файл лога аварийного завершения работы. (по умолчанию "./crash.log")
  -filter value
    	Плагин(фильтр): формат <название фильтра>[:путь к плагину][:путь к конфигу плагина]
  -limit-body int
    	Ограничение(MB): размер тела запроса в мегабайтах (по умолчанию 10)
  -limit-buf-read int
    	Ограничение(байты): размер буфера чтения в байтах (по умолчанию 2048)
  -limit-buf-write int
    	Ограничение(байты): размер буфера записи в байтах (по умолчанию 1024)
  -limit-conn int
    	Ограничение(количество): количество соединений на каждый сервер-источник (по умолчанию 64)
  -limit-conn-idle int
    	Ограничение(секунды): время простоя соединений с серверами-источниками (по умолчанию 30)
  -limit-conn-keepalive int
    	Ограничение(секунды): время жизни соединений с серверами-источниками (по умолчанию 60)
  -limit-healthcheck int
    	Ограничение: количество рабочих процессов проверки состояния (по умолчанию 1)
  -limit-healthcheck-interval int
    	Ограничение(секунды): интервал проверки состояния (по умолчанию 60)
  -limit-timeout-read int
    	Ограничение(секунды): время ожидания ответа от серверов-источников (по умолчанию 30)
  -limit-timeout-write int

Замечено, что последний параметр -limit-timeout-write был перенесён на новую строку, но не завершен. Для корректной передачи информации следует либо добавить описание этого параметра, либо удалить его, если он не используется. Ограничение (секунды): время ожидания отправки данных на серверы-источники (по умолчанию 30) -log-file string Внешний файл лога. По умолчанию логируется в консоль. -log-level string Уровень логгирования, по умолчанию info (по умолчанию "info") -namespace string Неймспейс для изоляции окружения. (по умолчанию "dev") -ttl-proxy int TTL (секунды): прокси (по умолчанию 10) -version Показывает информацию о версии ```Параметр namespace используется для изоляции нескольких окружений. Он должен совпадать с параметром `namespace` в `ApiServer`.

Окружение выполнения

Мы используем три сервера etcd, один сервер ApiServer и три сервера Proxy как пример.

Информация | Компонент | IP |

| ------------- | :-------------: | -----------: | | etcd кластер | 192.168.1.100, 192.168.1.101, 192.168.1.102 | | | Прокси | 192.168.1.200, 192.168.1.201, 192.168.1.202 | | | ApiServer | 192.168.1.203 |

Запуск прокси

./proxy --addr=192.168.1.200:80 --addr-rpc=192.168.1.200:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --namespace=test
./proxy --addr=192.168.1.201:80 --addr-rpc=192.168.1.201:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --namespace=test
./proxy --addr=192.168.1.202:80 --addr-rpc=192.168.1.202:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --namespace=test

Доступные адреса API пользователям: 192.168.1.201:80, 192.168.1.202:80, 192.168.1.203:80

Запуск ApiServer

./apiserver --addr=192.168.1.203:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --discovery --namespace=test

Создание метаданных с помощью ApiServer

Рестфул API шлюза

Пример клиента gRPC шлюза

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/fagongzi-gateway.git
git@api.gitlife.ru:oschina-mirror/fagongzi-gateway.git
oschina-mirror
fagongzi-gateway
fagongzi-gateway
master