All Projects → stefanprodan → syros

stefanprodan / syros

Licence: MIT License
DevOps tool for managing microservices

Programming Languages

go
31211 projects - #10 most used programming language
Vue
7211 projects
javascript
184084 projects - #8 most used programming language
CSS
56736 projects
Makefile
30231 projects
Dockerfile
14818 projects
HTML
75241 projects

Projects that are alternatives of or similar to syros

stackgres
StackGres Operator, Full Stack PostgreSQL on Kubernetes // !! Mirror repository of https://gitlab.com/ongresinc/stackgres, only accept Merge Requests there.
Stars: ✭ 479 (+1674.07%)
Mutual labels:  high-availability
pg async.rs
Asynchronous, HA (master-master) PostgreSQL driver on top of libpq.
Stars: ✭ 40 (+48.15%)
Mutual labels:  high-availability
influx-proxy
InfluxDB Proxy with High Availability and Consistent Hash
Stars: ✭ 223 (+725.93%)
Mutual labels:  high-availability
codenames
A simple bash script to convert hex values (such as commit ids) to codenames
Stars: ✭ 14 (-48.15%)
Mutual labels:  release-management
ha-postgres-docker-stack
Postgres + patroni + wal-e + haproxy + etcd
Stars: ✭ 47 (+74.07%)
Mutual labels:  high-availability
vapor master
high availability ros master
Stars: ✭ 17 (-37.04%)
Mutual labels:  high-availability
MySQL-InnoDB-Cluster-3VM-Setup
Installing and testing InnoDB cluster on 3 servers
Stars: ✭ 19 (-29.63%)
Mutual labels:  high-availability
neo4j-aws-ha-cluster
Neo4j Enterprise HA Cluster on AWS ECS
Stars: ✭ 13 (-51.85%)
Mutual labels:  high-availability
awesome-storage
A curated list of storage open source tools. Backups, redundancy, sharing, distribution, encryption, etc.
Stars: ✭ 324 (+1100%)
Mutual labels:  high-availability
jobor
支持秒级分布式定时任务系统, A high performance distributed task scheduling system, Support multi protocol scheduling tasks
Stars: ✭ 52 (+92.59%)
Mutual labels:  high-availability
ansible-role-etcd
Ansible role for installing etcd cluster
Stars: ✭ 38 (+40.74%)
Mutual labels:  high-availability
helm-openldap
Helm chart of Openldap in High availability with multi-master replication and PhpLdapAdmin and Ltb-Passwd
Stars: ✭ 101 (+274.07%)
Mutual labels:  high-availability
pg-dock
pg-dock cluster managment
Stars: ✭ 19 (-29.63%)
Mutual labels:  high-availability
blogr-pve
Puppet provisioning of HA failover/cluster environment implemented in Proxmox Virtual Environment and Linux boxes.
Stars: ✭ 28 (+3.7%)
Mutual labels:  high-availability
ansible-pihole
Bootstrap a Raspberry Pi with Ansible and install Docker + Pi-hole
Stars: ✭ 52 (+92.59%)
Mutual labels:  high-availability
Recon
HA LDAP based key/value solution for projects configuration storing with multi master replication support
Stars: ✭ 12 (-55.56%)
Mutual labels:  high-availability
core
Enterprise Grade #NodeJS Platform implementing Industry Standards & Patterns in order to provide Connectivity, Stability, High-Availability and High-Performance
Stars: ✭ 54 (+100%)
Mutual labels:  high-availability
Gauntlet
🔖 Guides, Articles, Podcasts, Videos and Notes to Build Reliable Large-Scale Distributed Systems.
Stars: ✭ 336 (+1144.44%)
Mutual labels:  high-availability
kube-karp
☸ Add a floating virtual IP to Kubernetes cluster nodes for load balancing easily.
Stars: ✭ 104 (+285.19%)
Mutual labels:  high-availability
pg keeper
Simplified clustering module for PostgreSQL
Stars: ✭ 32 (+18.52%)
Mutual labels:  high-availability

Syros

Build Status

A highly available and horizontally scalable DevOps tool for managing microservices across multiple regions and environments.

Components:

  • Syros Agent (collects various system information)
  • Syros Indexer (aggregates, transforms and persists collected data)
  • Syros App (management UI and API)
  • Syros PGHA (automatic failover and split brain mitigation for PostgreSQL repmgr clusters)
  • Syros Deployctl (CD tool for Docker containers, PostgreSQL/Kafka/OpenTSDB migrations)

Backend:

  • NATS (communication backbone)
  • MongoDB (persistence layer)
  • Consul (service registry, monitoring, leader election)

Dash

HA Setup:

  • Agent: 2 instances per environment or one per host, indexer will do deduplication
  • Indexer: 2 instances per environment, NATS will load balance the messages between instances
  • App: one per environment, HAProxy or NGNIX can be used but not required
  • NATS: 3 instances minimum
  • MongoDB: 3 instances minimum

Integrations

Collectors:

  • Docker (engine info, containers specs and stats)
  • Consul (service registry, health checks)
  • vSphere (clusters, datastores, networks, physical hosts specs, virtual machines specs and stats)

Development

Syros back-end is written in golang and the front-end in ES6 javascript (VueJs).

Prerequisites:

  • macOS or Linux
  • golang >= 1.7
  • node >= 4.0
  • npm >= 3.0
  • docker >= 1.13
  • make >= 3.81

Local setup:

# clone the repo into your go PATH under github.com/stefanprodan
$ git clone https://github.com/stefanprodan/syros.git
$ cd syros
# install go dependencies
$ go get -u github.com/golang/dep/cmd/dep
$ dep ensure
# install node dependencies
$ cd ui
$ npm install

Run locally:

# start NATS and MongoDB
$ docker-compose up -d
# build and run all services
$ make build run APP_VERSION=0.0.1 MONGO=192.168.1.135:27017 NATS=nats://192.168.1.135:4222
# remove build artifacs 
$ make clean
# remove containers and images
$ make purge APP_VERSION=0.0.1
# run go fmt and go vet
$ make fmt vet

Profiling on macOS

# install graphviz
brew install gperftools
brew install graphviz
# install pprof
go get github.com/google/pprof
# CPU profile
pprof --web localhost:8887/debug/pprof/profile
# goroutine profile
pprof -web localhost:8886/debug/pprof/goroutine
# memory profile
pprof http://127.0.0.1:8886/debug/pprof/heap

Continuous Integration

The CI pipeline is written in Make and uses Docker containers, no external dependencies like go or nodejs are required to build, test and deploy the services.

# build the UI with webpack and the golang binaries for Alpine
$ make build APP_VERSION=0.0.1
# run integration tests
$ make build test APP_VERSION=0.0.1 MONGO=192.168.1.135:27017 NATS=nats://192.168.1.135:4222
# push Docker images to registry
$ make build pack push APP_VERSION=0.0.1 REGISTRY=index.docker.io REPOSITORY=stefanprodan
# remove test containers and local images
$ make purge APP_VERSION=0.0.1
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].