Как получить или установить имя пользователя и пароль кластерной базы данных в Jelastic JPS - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь настроить кластерную базу данных Jelastic, как описано в Настройка автоматической кластеризации с использованием облачных сценариев , но я не вижу там документации, в которой описано, как установить или получить имя пользователя кластера ипароль.

Я попытался передать кластеру db_user и db_pass, имена, которые я нашел в некоторых образцах файлов JPS, а также использовать их в качестве настроек, но учетные данные были все еще только сгенерированными Jelasticединицы.

Вот JPS, который я пытаюсь использовать;он включает в себя простой контейнер Debian, который требует учетные данные базы данных в качестве переменных среды.В этом случае Docker-контейнер включает в себя только клиента MariaDB для целей тестирования, реальная среда немного сложнее, чем выполнение сценариев при запуске, которые требуют подключения к базе данных.

{
    "version": "1.5",
    "type": "install",
    "name": "Database test",
    "skipNodeEmails": true,
    "globals":
    {
        "MYSQL_ROOT_USERNAME": "root",
        "MYSQL_ROOT_PASSWORD": "${fn.password(20)}",
        "MYSQL_USERNAME": "username",
        "MYSQL_PASSWORD": "${fn.password(20)}",
        "MYSQL_DATABASE": "database",
        "MYSQL_HOSTNAME": "ProxySQL"
    },
    "nodes":
    [
        {
            "image": "mireiawen/debian-sql",
            "count": 1,
            "cloudlets": 8,
            "nodeGroup": "vds",
            "displayName": "SQL worker",
            "env":
            {
                "MYSQL_ROOT_USERNAME": "${globals.MYSQL_ROOT_USERNAME}",
                "MYSQL_ROOT_PASSWORD": "${globals.MYSQL_ROOT_PASSWORD}",
                "MYSQL_USERNAME": "${globals.MYSQL_USERNAME}",
                "MYSQL_PASSWORD": "${globals.MYSQL_PASSWORD}",
                "MYSQL_DATABASE": "${globals.MYSQL_DATABASE}",
                "MYSQL_HOSTNAME": "${globals.MYSQL_HOSTNAME}"
            }
        },
        {
            "nodeType": "mariadb-dockerized",
            "nodeGroup": "sqldb",
            "count": "2",
            "cloudlets": 16,
            "cluster":
            {
                "scheme": "master"
            }
        }
    ]
}

Этот JPS, похоже, запускаетсякластер мастер-мастер MariaDB правильно с включенным ProxySQL, мне просто не хватает документации о том, как предоставить учетные данные базы данных для кластера базы данных или способ извлечь сгенерированные для использования в качестве переменных в JPS для отправките к контейнерам.

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Механизм был улучшен, так что теперь вы можете передавать пользовательские учетные данные в кластер, используя переменные среды или настройки кластера:

type: install
name: env. variables

nodes: 
  nodeType: mariadb-dockerized
  nodeGroup: sqldb
  count: 2
  cloudlets: 8
  env:
    DB_USER: customuser
    DB_PASS: custompass
  cluster:
    scheme: master

или

type: install
name: cluster settings

nodes: 
  nodeType: mariadb-dockerized
  nodeGroup: sqldb
  count: 2
  cloudlets: 8
  cluster:
    scheme: master
    db_user: customuser
    db_pass: custompass
0 голосов
/ 30 декабря 2018

Спасибо за хороший вопрос.Механизм передачи пользовательских учетных данных должен быть и будет улучшен в ближайшее время.На данный момент вы можете использовать пример ниже.Короче говоря, мы отключаем автоматизированную кластеризацию и снова включаем ее с помощью имени пользователя и пароля.

---
version: 1.5
type: install
name: Database test
skipNodeEmails: true
baseUrl: https://raw.githubusercontent.com/jelastic-jps/mysql-cluster/master
globals:
  logic_jps: ${baseUrl}/addons/auto-clustering/scripts/auto-cluster-logic.jps
  MYSQL_USERNAME: username
  MYSQL_PASSWORD: ${fn.password(20)}

nodes:
- image: mireiawen/debian-sql
  count: 1
  cloudlets: 8
  nodeGroup: extra
  displayName: SQL worker
  env:
    MYSQL_USERNAME: ${globals.MYSQL_USERNAME}
    MYSQL_PASSWORD: ${globals.MYSQL_PASSWORD}

- nodeType: mariadb-dockerized
  nodeGroup: sqldb
  count: 2
  cloudlets: 16
  cluster: false

onInstall: 
  install:
    jps: ${globals.logic_jps}
    envName: ${env.envName}
    nodeGroup: sqldb
    settings:
      path: ${baseUrl}
      scheme: master
      logic_jps: ${globals.logic_jps}
      db_user: ${globals.MYSQL_USERNAME}
      db_pass: ${globals.MYSQL_PASSWORD}
      repl_user: repl-${fn.random}
      repl_pass: ${fn.password(20)}

Когда среда будет готова, вы можете проверить соединение, выполнив следующую команду в образе Docker:

 mysql -h proxy -u $MYSQL_USERNAME -p$MYSQL_PASSWORD 
...