Upload
-
View
445
Download
3
Embed Size (px)
DESCRIPTION
Александр Шостак, технический директор eComCharge «Мы делили апельсин» Александр расскажет о системе процессинга электронных платежей. В докладе будут рассмотрены проблемы, с которыми столкнулась команда, а именно: - как одно большое приложение было разделено на несколько - какие сервисы были реализованы - какие задачи были закрыты с помощь готовых решений - как внедрить нескольких сущностей (клиентов системы) - как реализовать безотказную работу особо важных частей системы. Также будет затронут вопрос мониторинга и разворачивания систем.
Citation preview
Мы делили апельсин
Александр Шостак[email protected]
Платежный шлюз
Покупатель Продавец Банк-эквайер
Процессоплаты картой
Платежный шлюз beGateway
Комбайн
Много функционалаМного тестовДолгий деплой
Два приложения
delayed_job
База данных
solr
redis
MySQL
PostgreSQL
MySQL PostgreSQL
Order.!rst Order.!rst≠
Failover• nginx/haproxy/...• keepalived• amazon elastic load balancer
nginx
сервер приложения 1
сервер приложения 2
nginx
входящий запрос
keepalived
сервер приложения 1IP 192.168.1.2
сервер приложения 2IP 192.168.1.3
сервис IP 192.168.1.1 сервис IP 192.168.1.1
входящий запрос к 192.168.1.1
amazon elastic load balancer
сервер приложения 1
сервер приложения 2
ELB
входящий запрос
Caphub
Caphub
cap project:location:environment deploy
Caphub
• в project.rb
• в environment.rb
• результат
role :app, "10.0.0.10", :primary => true
role :app, "10.0.0.20", :primary => true
role :app, "10.0.0.20", :primary => true
Caphub
Сервера
Chef
Chef
package "apache2" do action :install end
Chef
package "apache2" do
case node[:platform] when "centos" package_name "httpd" when "debian","ubuntu" package_name "apache2" else package_name "apache" end
action :install end
Chef
knife ec2 server create \ -N app \ -d ubuntu12.04-apt \ -r role[app] \ -f t1.micro \ --private-ip-address 10.0.0.22 \ --server-url http://10.0.2.254:4000
Chef
recipe[rvm::default_193] recipe[logrotate::wls] recipe[mysql::libmysqlclient] recipe[nginx::backend]
role[app]
Мониторинг
Zabbix
Monit
PID changed Service delayed_job-production
" Date: Wed, 04 Sep 2013 13:58:45" Action: alert" Host: delay" Description: process PID changed from 20715 to 7623
Your faithful employee, Monit
OSSEC
OSSEC HIDS Notification.2013 Sep 05 10:52:14
Received From: (log) 10.0.0.200->/var/log/syslogRule: 1002 fired (level 2) -> "Unknown problem somewhere in the system."Portion of the log(s):
Sep 05 10:52:13 10.0.0.108 +0000: [Worker(delayed_job host:delay pid:7623)] 2 jobs processed at 9.4945 j/s, 1 failed
Выводы
Вопросы?