По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В этой статье мы расскажем про самые популярные и полезные паттерны архитектуры программного обеспечения. Многоуровневая архитектура (n-уровневая) Многоуровневая архитектура является одной из самых распространенных. Ее идея заключается в том, что компоненты с одинаковыми функциями организованы в горизонтальные слои, или уровни. В результате чего каждый уровень выполняет определенную роль в приложении. В таком варианте архитектуры нет ограничения на количество уровней, которое может иметь приложение. При этом здесь также продвигается концепция разграничения полномочий. Многоуровневая архитектура абстрагирует представление о программном обеспечении как о едином целом; предоставляя достаточно информации для понимания ролей каждого уровня и взаимосвязи между ними. Стандартной реализацией такой модели может быть: Пользовательский интерфейс/уровень представления: отображение и запуск пользовательского интерфейса, отправка запросов серверному приложению. Уровень приложений: содержит уровень представления, уровень приложения, уровень предметной области и уровень хранения и управления данными. Уровень предметной области: этот уровень содержит всю логику предметной области, сущности, события и другие типы объектов, которые содержат логику предметной области. Уровень базы данных: это уровень данных, который используется для сохранения данных, которые будут использоваться сервером приложений. Пример: десктоп приложение, электронная коммерция или веб-приложения и т.д. Клиент-сервер Это наипростейшая архитектура, состоящая из сервера и нескольких клиентов. Она представляет собой распределенную структуру, которая распределяет задачи или рабочую нагрузку между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентами. При такой архитектуре, когда клиент отправляет запрос данных на сервер, сервер принимает этот запрос и отвечает клиенту, предоставляя требуемые данные. Клиенты своими ресурсами не делятся. Пример: электронная почта, обмен документами, банковские операции и т.д. Event-Bus (событийно-ориентированная архитектура) Это распределенная асинхронная архитектура для создания быстро масштабируемых реактивных приложений. Такая архитектура подходит для стека приложений любого уровня, от маленьких до сложных. Основная идея – асинхронная доставка и обработка событий. Эта модель состоит из четырех основных компонентов: Источник события Получатель события Канал Шина событий Источник публикует сообщение в определенный канал на шине событий. Получатель подписывается на определенный канал и получает сообщения, которые публикуются на канале, на который они подписаны. Пример: электронная коммерция, разработка мобильных приложений, службы уведомлений и т.д. Шаблон брокера Этот шаблон можно использовать для структурирования распределенных систем с несвязанными компонентами, взаимодействующими посредством удаленных вызовов служб. Компонент брокер отвечает за координацию обмена данными между компонентами; таких как переадресация запросов, а также передача результатов и исключений. Серверы публикуют свои возможности (услуги и характеристики) брокеру. Клиенты запрашивает услугу у брокера, и затем брокер перенаправляет клиента к подходящей услуге из своего реестра. Пример: ПО брокера сообщений, Apache ActiveMQ, Apache Kafka, RabbitMQ, JBoss Messaging и т.д. Микросервисный шаблон В данной модели службы взаимодействуют с использованием синхронных протоколов, таких как HTTP/REST, или асинхронных протоколов, таких как AMQP (Advanced Message Queuing Protocol - расширенный протокол организации очереди сообщений). Службы можно разрабатывать и разворачивать независимо, и каждая служба будет иметь собственную базу данных. Согласованность данных между службами поддерживается с помощью шаблона Saga (последовательность локальных транзакций). Пример: может быть реализован в различных вариантах использования, особенно в обширном конвейере данных Одноранговая модель (Peer-to-Peer) Здесь, как и в обычной клиент-серверной архитектуре, несколько клиентов взаимодействуют с центральным сервером. Но модель одноранговой сети (Р2Р) состоит из децентралированной сети одноранговых узлов. В этом шаблоне узлы ведут себя и как клиенты, и как серверы. Одноранговые узлы могут функционировать как клиент, запрашивающий услуги у других одноранговых узлов, и как сервер, предоставляющий услуги другим одноранговым узлам. Сети Р2Р распределяют рабочую нагрузку между одноранговыми узлами, и все они вносят и потребляют ресурсы внутри сети без необходимости использования централизованного сервера. Одноранговый узел может динамически менять свою роль с течением времени Пример: файлообменные сети, мультимедийные протоколы PDTP, P2PTV, биткоин, блокчен и т.д. Blackboard (доска объявлений) Данный паттерн полезен при решении задач, для которых не известны детерминированные стратегии решения. Все компоненты имеют доступ к «доске объявлений». Компоненты могут создавать новые объекты данных, которые в последствие будут добавлены на эту доску. Компоненты ищут определенные типы данных на доске и находят их по образцу, совпадающему с существующим источником знаний. Этот шаблон состоит из трех основных компонентов: Доска объявлений: структурированная глобальная память, которая содержит объекты из пространства решений. Источник знаний: специализированные модули с собственным представлением решения Компонент управления: выбирает, настраивает и выполняет модули Пример: быстрое распознавание, идентификация структуры белка, интерпретация сигналов звуколокатора, программы машинного обучения и т.д.
img
Подаренный компанией Google сообществу Opensource, Kubernetes теперь стал инструментом контейнерного хранения по выбору. Он может управлять и координировать не только среду выполнения докеров, но и среду контейнерного хранения объектов и Rkt. Типичный кластер Kubernetes обычно имеет главный узел и несколько рабочих узлов или Minions. Управление рабочими узлами осуществляется из главного узла, что обеспечивает управление кластером из центральной точки. Важно также отметить, что можно развернуть кластер с одним узлом Kubernetes, который обычно рекомендуется использовать для легких непроизводственных рабочих нагрузок. Для этого можно взять Minikube - инструмент, который управляет кластером K ubernetes с одним узлом в виртуальной машине. В этом руководстве мы рассмотрим многоузловую установку кластера Kubernetes в системе Linux CentOS 7. Это учебное пособие основано на командной строке и требует доступа к окну терминала. Требования Иметь несколько серверов под управлением Centos 7 (1 главный узел, 2 рабочих узла). Рекомендуется, чтобы главный узел содержал по крайней мере 2 ЦП, хотя это не является строгим требованием. Подключение к Интернету на всех узлах. Мы будем извлекать пакеты Kubernetes и докеров из хранилища. Кроме того, необходимо убедиться, что диспетчер пакетов yum установлен по умолчанию и может получать пакеты удаленно. Вам также потребуется доступ к учетной записи с правами sudo или root. В этом учебном пособии я буду использовать свою учетную запись root. Наш 3-узловой кластер будет выглядеть примерно так: Установка кластера Kubernetes на главном узле Для работы Kubernetes потребуется механизм контейнеризации. Для этой установки мы будем использовать docker, так как он самый популярный. На главном узле выполняются следующие шаги. Шаг 1: Подготовить имя узла, брандмауэр и SELinux На главном узле задайте имя хоста и, если у вас нет DNS-сервера, обновите файл /etc/hosts. # hostnamectl set-hostname master-node # cat <<EOF>> /etc/hosts 10.128.0.27 master-node 10.128.0.29 node-1 worker-node-1 10.128.0.30 node-2 worker-node-2 EOF Можно выполнить проверку связи с рабочим узлом 1 и рабочим узлом 2, чтобы убедиться в правильности работы обновленного файла хоста с помощью команды ping. # ping 10.128.0.29 # ping 10.128.0.30 Затем отключите SElinux и обновите правила брандмауэра. # setenforce 0 # sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux # reboot Установите следующие правила брандмауэра для портов. Убедитесь, что каждая команда firewall-cmd возвращает результат. # firewall-cmd --permanent --add-port=6443/tcp # firewall-cmd --permanent --add-port=2379-2380/tcp # firewall-cmd --permanent --add-port=10250/tcp # firewall-cmd --permanent --add-port=10251/tcp # firewall-cmd --permanent --add-port=10252/tcp # firewall-cmd --permanent --add-port=10255/tcp # firewall-cmd –reload # modprobe br_netfilter # echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables Шаг 2: Настройка Kubernetes Repo Нужно будет вручную добавить хранилище Kubernetes, так как оно не установлено по умолчанию в CentOS 7. cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF Шаг 3: Установить Kubeadm и Docker После того, как пакет repo уже готов, вы можете продолжить и установить kubeadm и docker пакеты. # yum install kubeadm docker -y После успешного завершения установки включите и запустите обе службы. # systemctl enable kubelet # systemctl start kubelet # systemctl enable docker # systemctl start docker Шаг 4: Установка Kubernetes Master и настройка пользователя по умолчанию Теперь мы готовы инициализировать Kubernetes Master, но до этого нужно отключить swap, чтобы запустить команду kubeadm init. # swapoff –a Инициализация Kubernetes master - это полностью автоматизированный процесс, управляемый командой kubeadm init, которую необходимо выполнить. # kubeadm init Инициализация Kubernetes master Возможно, потребуется скопировать последнюю строку и сохранить ее в другом месте, поскольку нужно будет запустить ее на рабочих узлах. kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5 --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 Совет: Иногда эта команда может жаловаться на переданные аргументы (args), поэтому отредактируйте ее, чтобы избежать ошибок. Таким образом, вы удалите символ , сопровождающий --token, и ваша последняя команда будет выглядеть следующим образом. kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5 --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 После успешной инициализации Kubernetes необходимо разрешить пользователю начать использование кластера. В нашем случае мы хотим запустить эту установку от имени пользователя root, поэтому мы продолжим выполнение этих команд с этого же имени. Вы можете перейти на пользователя с поддержкой sudo, который вы предпочитаете, и запустить ниже с помощью sudo. Чтобы использовать root, выполните следующие действия: # mkdir -p $HOME/.kube # cp -i /etc/kubernetes/admin.conf $HOME/.kube/config # chown $(id -u):$(id -g) $HOME/.kube/config Чтобы быть пользователем с поддержкой sudo, выполните следующие действия: $ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config Теперь проверьте, активирована ли команда kubectl. # kubectl get nodes На этом этапе также можно заметить, что главный узел имеет статус NotReady. Это связано с тем, что сеть модулей еще не развернута в кластере. Pod Network - это сеть наложения для кластера, которая развернута поверх текущей сети узла. Она предназначена для обеспечения возможности подключения через модуль. Шаг 5: Настройка сети модуля Применение сетевого кластера является очень гибким процессом в зависимости от потребностей пользователя и наличия множества доступных вариантов. Так как мы хотим сохранить нашу установку как можно проще, мы будем использовать плагин Weavenet, который не требует никакой конфигурации или дополнительного кода, и он предоставляет один IP-адрес на модуль, что отлично для нас. Для просмотра дополнительных параметров проверьте здесь. Эти команды будут важны для настройки сети модуля. # export kubever=$(kubectl version | base64 | tr -d ' ') # kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever" Теперь, если вы проверите статус главного узла, он должен показать "Ready" # kubectl get nodes Далее мы добавим рабочие узлы в кластер. Настройка рабочих узлов для присоединения к кластеру Kubernetes Следующие шаги будут выполнены на рабочих узлах. Эти шаги должны выполняться на каждом рабочем узле при присоединении к кластеру Kubernetes. Шаг 1: Подготовить имя узла, брандмауэр и SELinux На рабочем узле-1 и рабочем узле-2 задайте имя, а если у вас нет DNS-сервера, то обновите основные и рабочие узлы в файле /etc/hosts. # hostnamectl set-hostname 'node-1' # cat <<EOF>> /etc/hosts 10.128.0.27 master-node 10.128.0.29 node-1 worker-node-1 10.128.0.30 node-2 worker-node-2 EOF Можно выполнить ping master-node для проверки правильности обновленного файла хоста. Затем отключите SElinux и обновите правила брандмауэра. # setenforce 0 # sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux Установите следующие правила брандмауэра для портов. Убедитесь, что все команды firewall-cmd возвращаются успешно. # firewall-cmd --permanent --add-port=6783/tcp # firewall-cmd --permanent --add-port=10250/tcp # firewall-cmd --permanent --add-port=10255/tcp # firewall-cmd --permanent --add-port=30000-32767/tcp # firewall-cmd --reload # echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables Шаг 2: Настройка Kubernetes Repo Вам потребуется добавить хранилище Kubernetes вручную, так как оно не будет предварительно установлено на CentOS 7. cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF Шаг 3: Установить Kubeadm и Docker После того, как пакет repo уже готов, вы можете продолжить и установить kubeadm и docker пакеты. # yum install kubeadm docker -y Запустите и включите обе службы. # systemctl enable docker # systemctl start docker # systemctl enable kubelet # systemctl start kubelet Шаг 4: Присоединение рабочего узла к кластеру Кубернетов Теперь для присоединения к кластеру требуется маркер, созданный kubeadm init. Его можно скопировать и вставить в узлы 1 и 2, если он был скопирован в другом месте. # kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5 --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 Как показано в последней строке, вернитесь к главному узлу и проверьте, присоединились ли рабочие узлы 1 и 2 к кластеру с помощью следующей команды. # kubectl get nodes Если все шаги выполнены успешно, на главном узле должны быть показаны узлы 1 и 2 в состоянии готовности. На этом этапе мы успешно завершили установку кластера Kubernetes на Centos 7 и успешно взяли два рабочих узла. Теперь можно начинать создавать модули и разворачивать службы.
img
У вас проблемы с доступом к удаленному серверу через SSH? Если SSH отвечает сообщением «Connection Refused» (Соединение отклонено), возможно, вам придется изменить запрос или проверить настройки. Почему при использовании SSH возникает отказ в подключении? Существует множество причин, по которым вы можете получить ошибку «Connection Refused» при попытке подключения к серверу по SSH. Чтобы решить эту проблему, вам сначала нужно определить, почему система отказалась от вашего подключения через SSH. Ниже вы найдете некоторые из наиболее распространенных причин, которые могут вызвать отказ в соединении SSH. Клиент SSH не установлен Прежде чем устранять другие проблемы, первым делом необходимо проверить, правильно ли установлен SSH. На машине, с которой вы получаете доступ к серверу, должен быть настроен клиент SSH. Без правильной настройки клиента вы не сможете подключиться к серверу. Чтобы проверить, есть ли в вашей системе клиент SSH, введите в окне терминала следующее: ssh Если терминал предоставляет список параметров команды ssh, клиент SSH установлен в системе. Однако, если он ответит, что команда не найдена (command not found), вам необходимо установить клиент OpenSSH. Решение: установить клиент SSH Чтобы установить клиент SSH на свой компьютер, откройте терминал и выполните одну из команд, перечисленных ниже. Для систем Ubuntu / Debian: sudo apt установить openssh-client Для систем CentOS / RHEL: sudo yum установить openssh-client Демон SSH не установлен на сервере Так же, как вам нужна клиентская версия SSH для доступа к удаленному серверу, вам нужна версия сервера для прослушивания и приема соединений. Таким образом, сервер может отклонить входящее соединение, если SSH-сервер отсутствует или настройка неверна. Чтобы проверить, доступен ли SSH на удаленном сервере, выполните команду: ssh localhost Если на выходе отображается «Connection refused», переходите к установке SSH на сервере. Решение: установите SSH на удаленный сервер Чтобы решить проблему отсутствия сервера SSH, установите сервер OpenSSH. Учетные данные неверны Опечатки или неправильные учетные данные - частые причины отказа в SSH-соединении. Убедитесь, что вы не ошиблись при вводе имени пользователя или пароля. Затем проверьте, правильно ли вы используете IP-адрес сервера. Наконец, убедитесь, что у вас открыт правильный порт SSH. Вы можете проверить, запустив: grep Port /etc/ssh/sshd_config На выходе отображается номер порта, как на картинке ниже. Служба SSH не работает Служба SSH должна быть включена и работать в фоновом режиме. Если служба не работает, демон SSH не может принимать соединения. Чтобы проверить статус службы, введите эту команду: sudo service ssh status Вывод должен ответить, что служба активна. Если терминал отвечает, что служба не работает, включите его, чтобы решить проблему. Решение: включить службу SSH Если система показывает, что демон SSH не активен, вы можете запустить службу, выполнив: systemctl start sshd Чтобы служба запускалась при загрузке, выполните команду: sudo systemctl enable sshd Брандмауэр препятствует подключению SSH SSH может отклонить соединение из-за ограничений брандмауэра. Брандмауэр защищает сервер от потенциально опасных подключений. Однако, если в системе настроен SSH, необходимо настроить брандмауэр, чтобы разрешить SSH-соединения. Убедитесь, что брандмауэр не блокирует SSH-соединения, так как это может вызвать ошибку «Connection refused». Решение: разрешить SSH-подключения через брандмауэр Чтобы решить проблему, о которой мы упоминали выше, вы можете использовать ufw (Uncomplicated Firewall - несложный брандмауэр), инструмент интерфейса командной строки для управления конфигурацией брандмауэра. Введите следующую команду в окне терминала, чтобы разрешить SSH-соединения: sudo ufw allow ssh Порт SSH закрыт Когда вы пытаетесь подключиться к удаленному серверу, SSH отправляет запрос на определенный порт. Чтобы принять этот запрос, на сервере должен быть открыт порт SSH. Если порт закрыт, сервер отказывает в соединении. По умолчанию SSH использует порт 22. Если вы не вносили никаких изменений в конфигурацию порта, вы можете проверить, прослушивает ли сервер входящие запросы. Чтобы вывести список всех прослушивающих портов, запустите: sudo lsof -i -n -P | grep LISTEN Найдите порт 22 в выходных данных и проверьте, установлено ли для него STATE значение LISTEN. Кроме того, вы можете проверить, открыт ли конкретный порт, в данном случае порт 22: sudo lsof -i:22 Решение: откройте порт SSH Чтобы разрешить порту 22 слушать запросы, используйте команду iptables: sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT Вы также можете открывать порты через графический интерфейс, изменив настройки брандмауэра. Отладка и ведение журнала SSH Чтобы проанализировать проблемы SSH в Linux, вы можете включить подробный режим или режим отладки. Когда вы включаете этот режим, SSH выдает отладочные сообщения, которые помогают устранять проблемы с подключением, конфигурацией и аутентификацией. Существует три уровня детализации: уровень 1 (-v) уровень 2 (-vv) уровень 3 (-vvv) Поэтому вместо доступа к удаленному серверу с использованием синтаксиса ssh [server_ip] добавьте параметр -v и выполните: ssh -v [server_ip] В качестве альтернативы вы можете использовать: ssh -vv [server_ip] или ssh -vvv [server_ip]
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59