рдХреБрдмреЗрд░рдиреЗрдЯрдорд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╕рди: рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд░ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ

рдХреБрдмреЗрд░рдиреЗрдЯрдорд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╕рди: рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд░ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ

рд╣рд╛рдореА рдирд┐рдпрдорд┐рдд рд░реВрдкрдорд╛ Apache Cassandra рдбрд╛рдЯрд╛рдмреЗрд╕ рд░ рдпрд╕рд▓рд╛рдИ Kubernetes-рдЖрдзрд╛рд░рд┐рдд рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рднрд┐рддреНрд░ рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░реНрдиреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдЫреМрдВред рдпрд╕ рд╕рд╛рдордЧреНрд░реАрдорд╛, рд╣рд╛рдореА рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рд▓рд╛рдИ K8s рдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рдХрджрдорд╣рд░реВ, рдорд╛рдкрджрдгреНрдбрд╣рд░реВ рд░ рдЕрд╡рд╕реНрдерд┐рдд рд╕рдорд╛рдзрд╛рдирд╣рд░реВ (рдЕрдкрд░реЗрдЯрд░рд╣рд░реВрдХреЛ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди рд╕рд╣рд┐рдд) рдХреЛ рд╣рд╛рдореНрд░реЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рд╛рдЭрд╛ рдЧрд░реНрдиреЗрдЫреМрдВред

"рдЬрд╕рд▓реЗ рдорд╣рд┐рд▓рд╛рд▓рд╛рдИ рд╢рд╛рд╕рди рдЧрд░реНрди рд╕рдХреНрдЫ рдЙрд╕рд▓реЗ рд░рд╛рдЬреНрдп рдкрдирд┐ рд╢рд╛рд╕рди рдЧрд░реНрди рд╕рдХреНрдЫ"

рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдХреЛ рд╣реЛ? рдпреЛ рдПрдХ рд╡рд┐рддрд░рд┐рдд рднрдгреНрдбрд╛рд░рдг рдкреНрд░рдгрд╛рд▓реА рд╣реЛ рдЬреБрди рдбрд╛рдЯрд╛рдХреЛ рдареВрд▓реЛ рдорд╛рддреНрд░рд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рд╣реЛ рдЬрдмрдХрд┐ рдЕрд╕рдлрд▓рддрд╛рдХреЛ рдПрдХрд▓ рдмрд┐рдиреНрджреБ рдмрд┐рдирд╛ рдЙрдЪреНрдЪ рдЙрдкрд▓рдмреНрдзрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрджреИред рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓рд╛рдИ рд▓рд╛рдореЛ рдкрд░рд┐рдЪрдп рдЪрд╛рд╣рд┐рдиреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдо рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рдХреЛ рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ рдорд╛рддреНрд░ рджрд┐рдиреЗрдЫреБ рдЬреБрди рдПрдХ рд╡рд┐рд╢реЗрд╖ рд▓реЗрдЦрдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ рд╕рд╛рдиреНрджрд░реНрднрд┐рдХ рд╣реБрдиреЗрдЫ:

  • рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдЬрд╛рднрд╛рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫред
  • рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдЯреЛрдкреЛрд▓реЛрдЬреАрд▓реЗ рдзреЗрд░реИ рд╕реНрддрд░рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ:
    • рдиреЛрдб - рдПрдХ рддреИрдирд╛рдд рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдЙрджрд╛рд╣рд░рдг;
    • рд░реНрдпрд╛рдХ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдХреЛ рд╕рдореВрд╣ рд╣реЛ, рдХреЗрд╣реА рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдПрдХрддрд╛рдмрджреНрдз, рдПрдЙрдЯреИ рдбрд╛рдЯрд╛ рдХреЗрдиреНрджреНрд░рдорд╛ рдЕрд╡рд╕реНрдерд┐рдд;
    • Datacenter - рдПрдХ рдбрд╛рдЯрд╛ рдХреЗрдиреНрджреНрд░ рдорд╛ рд╕реНрдерд┐рдд Cassandra рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдмреИ рд╕рдореВрд╣ рдХреЛ рдПрдХ рд╕рдВрдЧреНрд░рд╣;
    • рдХреНрд▓рд╕реНрдЯрд░ рд╕рдмреИ рдбрд╛рдЯрд╛ рдХреЗрдиреНрджреНрд░рд╣рд░реВрдХреЛ рд╕рдВрдЧреНрд░рд╣ рд╣реЛред
  • рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рд▓реЗ рдиреЛрдб рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред
  • рд▓реЗрдЦрди рд░ рдкрдвреНрдиреЗ рдЕрдкрд░реЗрд╕рдирд╣рд░реВрд▓рд╛рдИ рдЧрддрд┐ рджрд┐рди, рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рд▓реЗ RAM рдорд╛ рдХреЗрд╣реА рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдЫред

рдЕрдм - Kubernetes рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдореНрднрд╛рд╡рд┐рдд рд╕рд╛рд░реНрди рдХреЛ рд▓рд╛рдЧреАред

рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдЪреЗрдХ-рд▓рд┐рд╕реНрдЯ

рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рдХреЛ рдХреБрдмреЗрд░рдиреЗрдЯрдорд╛ рдмрд╕рд╛рдЗрдБрд╕рд░рд╛рдЗрдХреЛ рдмрд╛рд░реЗрдорд╛ рдмреЛрд▓реНрджреИ, рд╣рд╛рдореА рдЖрд╢рд╛ рдЧрд░реНрдЫреМрдВ рдХрд┐ рдпрд╕ рдХрджрдорд▓реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдЕрдЭ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реБрдиреЗрдЫред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдХреЗ рдЪрд╛рд╣рд┐рдиреНрдЫ, рдпрд╕рд▓реЗ рдХреЗ рдорджреНрджрдд рдЧрд░реНрдЫ?

1. рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг

рдкрд╣рд┐рд▓реЗ рдиреИ рд╕реНрдкрд╖реНрдЯ рдЧрд░рд┐рдПрдЭреИрдВ, рдХреНрдпрд╛рд╕рд╛рдиреНрдбрд╛рд▓реЗ рдбрд╛рдЯрд╛рдХреЛ рдЕрдВрд╢ RAM - in рдорд╛ рднрдгреНрдбрд╛рд░ рдЧрд░реНрджрдЫ Memtableред рддрд░ рддреНрдпрд╣рд╛рдБ рдбрд╛рдЯрд╛рдХреЛ рдЕрд░реНрдХреЛ рднрд╛рдЧ рд╣реЛ рдЬреБрди рдбрд┐рд╕реНрдХрдорд╛ рдмрдЪрдд рдЧрд░рд┐рдПрдХреЛ рдЫ - рдлрд╛рд░рдордорд╛ SSTableред рдпрд╕ рдбреЗрдЯрд╛рдорд╛ рдПрдХ рдирд┐рдХрд╛рдп рдердкрд┐рдПрдХреЛ рдЫ рдкреНрд░рддрд┐рдмрджреНрдз рд▓рдЧ - рд╕рдмреИ рд▓реЗрдирджреЗрдирд╣рд░реВрдХреЛ рд░реЗрдХрд░реНрдб, рдЬреБрди рдбрд┐рд╕реНрдХрдорд╛ рдкрдирд┐ рдмрдЪрдд рдЧрд░рд┐рдиреНрдЫред

рдХреБрдмреЗрд░рдиреЗрдЯрдорд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╕рди: рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд░ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ
рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рдорд╛ рд▓реЗрдирджреЗрди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН

Kubernetes рдорд╛, рд╣рд╛рдореА рдбреЗрдЯрд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди PersistentVolume рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рд╕рд┐рджреНрдз рд╕рдВрдпрдиреНрддреНрд░рдХреЛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрд╡рд╛рдж, Kubernetes рдорд╛ рдбреЗрдЯрд╛ рд╕рдВрдЧ рдХрд╛рдо рд╣рд░реЗрдХ рд╡рд░реНрд╖ рд╕рдЬрд┐рд▓реЛ рд╣реБрдБрджреИрдЫред

рдХреБрдмреЗрд░рдиреЗрдЯрдорд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╕рди: рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд░ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ
рд╣рд╛рдореА рдкреНрд░рддреНрдпреЗрдХ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдкреЛрдбрдорд╛ рд╣рд╛рдореНрд░реЛ рдЖрдлреНрдиреИ Persistent Volume рдЖрд╡рдВрдЯрд┐рдд рдЧрд░реНрдиреЗрдЫреМрдВ

рдпреЛ рдиреЛрдЯ рдЧрд░реНрди рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рдХрд┐ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдЖрдлреИрд▓реЗ рдбрд╛рдЯрд╛ рдкреНрд░рддрд┐рдХреГрддрд┐рд▓рд╛рдИ рд╕рдВрдХреЗрдд рдЧрд░реНрджрдЫ, рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рд░реНрдорд┐рдд рд╕рдВрдпрдиреНрддреНрд░рд╣рд░реВ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реНрджреИред рддрд╕рд░реНрде, рдпрджрд┐ рддрдкрд╛рдИрд▓реЗ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдиреЛрдбрд╣рд░реВрдмрд╛рдЯ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдХреНрд▓рд╕реНрдЯрд░ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдбреЗрдЯрд╛ рднрдгреНрдбрд╛рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ Ceph рд╡рд╛ GlusterFS рдЬрд╕реНрддрд╛ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣реЛрд╕реНрдЯ рдбрд┐рд╕реНрдХрдорд╛ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рддрд╛рд░реНрдХрд┐рдХ рд╣реБрдиреЗрдЫ рд╕реНрдерд╛рдиреАрдп рд▓рдЧрд╛рддрд╛рд░ рдбрд┐рд╕реНрдХ рд╡рд╛ рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрджреИ hostPath.

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдкреНрд░рддреНрдпреЗрдХ рд╕реБрд╡рд┐рдзрд╛ рд╢рд╛рдЦрд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЫреБрдЯреНрдЯреИ рд╡рд╛рддрд╛рд╡рд░рдг рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ рдЕрд░реНрдХреЛ рдкреНрд░рд╢реНрди рд╣реЛред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдЙрдЯрд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдиреЛрдб рдЙрдард╛рдЙрдиреБ рд░ рдбрд╛рдЯрд╛рд▓рд╛рдИ рд╡рд┐рддрд░рд┐рдд рднрдгреНрдбрд╛рд░рдгрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреБ рд╣реЛ, рдЕрд░реНрдерд╛рддреНред рдЙрд▓реНрд▓реЗрдЦрд┐рдд Ceph рд░ GlusterFS рддрдкрд╛рдИрдВрдХреЛ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рд╣реБрдиреЗрдЫрдиреНред рддреНрдпрд╕реЛрднрдП рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд╣реБрдиреЗрдЫ рдХрд┐ рдЙрд╕рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдбрд╛рдЯрд╛ рдЧреБрдорд╛рдЙрдиреЗ рдЫреИрди рдпрджрд┐ рдХреБрдмрд░реНрдиреНрдЯреЗрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рд╣рд░рд╛рдП рдкрдирд┐ред

2. рдЕрдиреБрдЧрдорди

Kubernetes рдорд╛ рдЕрдиреБрдЧрдорди рд▓рд╛рдЧреВ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рд▓рдЧрднрдЧ рдирд┐рд░реНрд╡рд┐рд░реЛрдз рдЫрдиреЛрдЯ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рд╣реЛ (рд╣рд╛рдореАрд▓реЗ рдпрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╡рд┐рд╕реНрддреГрдд рд░реВрдкрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрдпреМрдВ рд╕рдореНрдмрдиреНрдзрд┐рдд рд░рд┐рдкреЛрд░реНрдЯ)ред рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдирд┐рд░реНрдпрд╛рддрдХрд╣рд░реВрд╕рдБрдЧ рдХрд╕рд░реА рднрдЗрд░рд╣реЗрдХреЛ рдЫ? рд░, Grafana рдХрд╛ рд▓рд╛рдЧрд┐ рдорд┐рд▓реНрджреЛ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрд╣рд░реВрд╕рдБрдЧ рдЕрдЭ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХреЗ рдЫ?

рдХреБрдмреЗрд░рдиреЗрдЯрдорд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╕рди: рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд░ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ
Cassandra рдХреЛ рд▓рд╛рдЧрд┐ Grafana рдорд╛ рдЧреНрд░рд╛рдл рдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг

рддреНрдпрд╣рд╛рдБ рдХреЗрд╡рд▓ рджреБрдИ рдирд┐рд░реНрдпрд╛рддрдХрд╣рд░реВ рдЫрдиреН: jmx_exporter ╨╕ cassandra_exporter.

рд╣рд╛рдореАрд▓реЗ рдЖрдлреНрдиреЛ рд▓рд╛рдЧрд┐ рдкрд╣рд┐рд▓реЛ рд░реЛрдЬреНрдпреМрдВ рдХрд┐рдирднрдиреЗ:

  1. JMX рдирд┐рд░реНрдпрд╛рддрдХ рдмрдвреНрджреИ рд░ рд╡рд┐рдХрд╛рд╕ рднрдЗрд░рд╣реЗрдХреЛ рдЫ, рдЬрдмрдХрд┐ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдирд┐рд░реНрдпрд╛рддрдХрд▓реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдореБрджрд╛рдп рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреЗрдХреЛ рдЫреИрдиред Cassandra рдирд┐рд░реНрдпрд╛рддрдХ рдЕрдЭреИ рдкрдирд┐ Cassandra рдХреЛ рдзреЗрд░реИ рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд░реНрдерди рдЧрд░реНрджреИрдиред
  2. рддрдкрд╛рдИрдВ рдЭрдгреНрдбрд╛ рдердкреЗрд░ рдЬрд╛рднрд╛рдЬреЗрдиреНрдЯрдХреЛ рд░реВрдкрдорд╛ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ -javaagent:<plugin-dir-name>/cassandra-exporter.jar=--listen=:9180.
  3. рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рдЫ рдкрд░реНрдпрд╛рдкреНрдд рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб, рдЬреБрди Cassandra Exporter рд╕рдБрдЧ рдорд┐рд▓реНрджреИрдиред

3. Kubernetes primitives рдЪрдпрди рдЧрд░реНрджреИ

рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдорд╛рдерд┐рдХреЛ рд╕рдВрд░рдЪрдирд╛ рдЕрдиреБрд╕рд╛рд░, рдХреБрдмреЗрд░рдиреЗрдЯ рд╢рдмреНрджрд╛рд╡рд▓реАрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рд╕рдмреИ рдХреБрд░рд╛ рдЕрдиреБрд╡рд╛рдж рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВ:

  • рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдиреЛрдб тЖТ рдкреЛрдб
  • рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рд░реНрдпрд╛рдХ тЖТ рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯ
  • рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдбрд╛рдЯрд╛рд╕реЗрдиреНрдЯрд░ тЖТ StatefulSets рдмрд╛рдЯ рдкреВрд▓
  • рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдХреНрд▓рд╕реНрдЯрд░ тЖТ ???

рдпреЛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ рдХрд┐ рдХреЗрд╣рд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕реНрдерд╛ рд╣рд░рд╛рдЗрд░рд╣реЗрдХреЛ рдЫ рд╕рдореНрдкреВрд░реНрдг Cassandra рдХреНрд▓рд╕реНрдЯрд░ рдПрдХреИрдЪреЛрдЯрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрдиред рддрд░ рдпрджрд┐ рдХреЗрд╣рд┐ рдЕрд╡рд╕реНрдерд┐рдд рдЫреИрди рднрдиреЗ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ! Kubernetes рд╕рдБрдЧ рдпрд╕ рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐ рдЖрдлреНрдиреИ рд╕реНрд░реЛрддрд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреЗ рд╕рдВрдпрдиреНрддреНрд░ рдЫ - рдЕрдиреБрдХреВрд▓рди рд╕реНрд░реЛрдд рдкрд░рд┐рднрд╛рд╖рд╛рд╣рд░реВ.

рдХреБрдмреЗрд░рдиреЗрдЯрдорд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╕рди: рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд░ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ
рд▓рдЧ рд░ рдЕрд▓рд░реНрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдердк рд╕реНрд░реЛрддрд╣рд░реВ рдШреЛрд╖рдгрд╛ рдЧрд░реНрджреИ

рддрд░ рдЕрдиреБрдХреВрд▓рди рд╕рдВрд╕рд╛рдзрди рдЖрдлреИрдВрдорд╛ рдХреЗрд╣рд┐ рдорддрд▓рдм рдЫреИрди: рд╕рдмреИ рдкрдЫрд┐, рдпреЛ рдЖрд╡рд╢реНрдпрдХ рдЫ рдирд┐рдпрдиреНрддреНрд░рдХред рддрдкрд╛рдИрдВрд▓реЗ рдорджреНрджрдд рдЦреЛрдЬреНрдиреБ рдкрд░реНрдиреЗ рд╣реБрди рд╕рдХреНрдЫ Kubernetes рдЕрдкрд░реЗрдЯрд░...

4. рдкреЛрдб рдХреЛ рдкрд╣рд┐рдЪрд╛рди

рдорд╛рдерд┐рдХреЛ рдЕрдиреБрдЪреНрдЫреЗрджрдорд╛, рд╣рд╛рдореАрд▓реЗ рд╕рд╣рдорддрд┐ рдЧрд░реНрдпреМрдВ рдХрд┐ рдПрдЙрдЯрд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдиреЛрдбрд▓реЗ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдорд╛ рдПрдЙрдЯрд╛ рдкреЛрдб рдмрд░рд╛рдмрд░ рд╣реБрдиреЗрдЫред рддрд░ рдкреЛрдбрд╣рд░реВрдХреЛ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рдлрд░рдХ рд╣реБрдиреЗрдЫрдиреНред рд░ Cassandra рдорд╛ рдПрдХ рдиреЛрдб рдХреЛ рдкрд╣рд┐рдЪрд╛рди IP рдареЗрдЧрд╛рдирд╛ рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫ... рдпреЛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрдб рд╣рдЯрд╛рдЙрди рдкрдЫрд┐, Cassandra рдХреНрд▓рд╕реНрдЯрд░рд▓реЗ рдирдпрд╛рдБ рдиреЛрдб рдердкреНрдиреЗрдЫред

рддреНрдпрд╣рд╛рдБ рдПрдХ рдмрд╛рдЯреЛ рдЫ, рд░ рдХреЗрд╡рд▓ рдПрдХ рдЫреИрди:

  1. рд╣рд╛рдореА рд╣реЛрд╕реНрдЯ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рд╣рд░реВ (UUIDs рдЬрд╕рд▓реЗ рдЕрджреНрд╡рд┐рддреАрдп рд░реВрдкрдорд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрджрдЫ) рд╡рд╛ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВрджреНрд╡рд╛рд░рд╛ рд░реЗрдХрд░реНрдбрд╣рд░реВ рд░рд╛рдЦреНрди рд╕рдХреНрдЫреМрдВ рд░ рдпреЛ рд╕рдмреИрд▓рд╛рдИ рдХреЗрд╣реА рд╕рдВрд░рдЪрдирд╛/рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рд╡рд┐рдзрд┐рдорд╛ рджреБрдИ рдореБрдЦреНрдп рд╣рд╛рдирд┐рд╣рд░реВ рдЫрдиреН:
    • рдпрджрд┐ рджреБрдИ рдиреЛрдбрд╣рд░реВ рдПрдХреИ рдкрдЯрдХ рдЦрд╕реНрдЫрдиреН рднрдиреЗ рджреМрдб рдЕрд╡рд╕реНрдерд╛рдХреЛ рдЬреЛрдЦрд┐рдоред рд╡реГрджреНрдзрд┐ рдкрдЫрд┐, рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдиреЛрдбрд╣рд░реВрд▓реЗ рдПрдХреИ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛рдмрд╛рдЯ IP рдареЗрдЧрд╛рдирд╛ рдЕрдиреБрд░реЛрдз рдЧрд░реНрдиреЗрдЫ рд░ рдЙрд╣реА рд╕реНрд░реЛрддрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдЧрд░реНрдиреЗрдЫред
    • рдпрджрд┐ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдиреЛрдбрд▓реЗ рдпрд╕рдХреЛ рдбрд╛рдЯрд╛ рд╣рд░рд╛рдПрдХреЛ рдЫ рднрдиреЗ, рд╣рд╛рдореА рдЕрдм рдпрд╕рд▓рд╛рдИ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗ рдЫреИрдиреМрдВред
  2. рджреЛрд╕реНрд░реЛ рд╕рдорд╛рдзрд╛рди рд╕рд╛рдиреЛ рд╣реНрдпрд╛рдХ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ, рддрд░ рдЬреЗ рд╣реЛрд╕реН: рд╣рд╛рдореА рдкреНрд░рддреНрдпреЗрдХ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдиреЛрдбрдХреЛ рд▓рд╛рдЧрд┐ рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреАрд╕рдБрдЧ рд╕реЗрд╡рд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдпреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдВрдЧ рд╕рдорд╕реНрдпрд╛рд╣рд░реБ:
    • рдпрджрд┐ рддреНрдпрд╣рд╛рдБ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдзреЗрд░реИ рдиреЛрдбрд╣рд░реВ рдЫрдиреН рднрдиреЗ, рд╣рд╛рдореАрд▓реЗ рдзреЗрд░реИ рд╕реЗрд╡рд╛рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред
    • ClusterIP рд╕реБрд╡рд┐рдзрд╛ iptables рдорд╛рд░реНрдлрдд рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫред рдпрджрд┐ Cassandra рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдзреЗрд░реИ (1000... рд╡рд╛ 100?) рдиреЛрдбрд╣рд░реВ рдЫрдиреН рднрдиреЗ рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╣реБрди рд╕рдХреНрдЫред рдпрджреНрдпрдкрд┐ IPVS рдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╕рдиреНрддреБрд▓рди рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╕рдХреНрдЫред
  3. рддреЗрд╕реНрд░реЛ рд╕рдорд╛рдзрд╛рди рд╕реЗрдЯрд┐рдЩ рд╕рдХреНрд╖рдо рдЧрд░реЗрд░ рдкреЛрдбрд╣рд░реВрдХреЛ рд╕рдорд░реНрдкрд┐рдд рдиреЗрдЯрд╡рд░реНрдХрдХреЛ рд╕рдЯреНрдЯрд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдиреЛрдбрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдиреЛрдбрд╣рд░реВрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рд╣реЛред hostNetwork: trueред рдпреЛ рд╡рд┐рдзрд┐рд▓реЗ рдХреЗрд╣реА рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ рд▓рдЧрд╛рдЙрдБрдЫ:
    • рдПрдХрд╛рдЗрд╣рд░реВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиред рдпреЛ рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рдирдпрд╛рдБ рдиреЛрдбрдорд╛ рдЕрдШрд┐рд▓реНрд▓реЛрдХреЛ рдЬрд╕реНрддреИ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛ рд╣реБрдиреБрдкрд░реНрджрдЫ (рдПрдбрдмреНрд▓реНрдпреВрдПрд╕, рдЬреАрд╕реАрдкреА рдЬрд╕реНрддрд╛ рдХреНрд▓рд╛рдЙрдбрд╣рд░реВрдорд╛ рдпреЛ рдЧрд░реНрди рд▓рдЧрднрдЧ рдЕрд╕рдореНрднрд╡ рдЫ);
    • рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрд╣рд░реВрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рд╣рд╛рдореА рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдЧрд░реНрди рдерд╛рд▓реНрдЫреМрдВред рддреНрдпрд╕рдХрд╛рд░рдг, рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрдорд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рд╕рдБрдЧ рдПрдХ рднрдиреНрджрд╛ рдмрдвреА рдкреЛрдб рд░рд╛рдЦреНрдиреБ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реБрдиреЗрдЫред

5. рдмреНрдпрд╛рдХрдЕрдкрд╣рд░реВ

рд╣рд╛рдореА рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдПрдХрд▓ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдиреЛрдбрдХреЛ рдбреЗрдЯрд╛рдХреЛ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдмрдЪрдд рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВред Kubernetes рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ рдХреНрд░реЛрдирдЬрдмрддрд░ рдпрд╣рд╛рдБ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдЖрдлреИрд▓реЗ рд╣рд╛рдореНрд░реЛ рдкрд╛рдЩреНрдЧреНрд░рд╛рдорд╛ рд╕реНрдкреЛрдХ рд░рд╛рдЦреНрдЫрд┐рдиреНред

рдорд▓рд╛рдИ рддрдкрд╛рдИрд▓рд╛рдИ рд╕рдореНрдЭрд╛рдЙрди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рд▓реЗ рдореЗрдореЛрд░реАрдорд╛ рдХреЗрд╣рд┐ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░ рдЧрд░реНрджрдЫред рдкреВрд░реНрдг рдмреНрдпрд╛рдХрдЕрдк рдмрдирд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓рд╛рдИ рдореЗрдореЛрд░реАрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдЪрд╛рд╣рд┐рдиреНрдЫ (рдореЗрдордЯреЗрдмрд▓рд╣рд░реВ) рдбрд┐рд╕реНрдХрдорд╛ рд╕рд╛рд░реНрдиреБрд╣реЛрд╕реН (SSTables)ред рдпрд╕ рдмрд┐рдиреНрджреБрдорд╛, рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдиреЛрдбрд▓реЗ рдЬрдбрд╛рдирд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рд░реЛрдХреНрдЫ, рдХреНрд▓рд╕реНрдЯрд░рдмрд╛рдЯ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдмрдиреНрдж рд╣реБрдиреНрдЫред

рдпрд╕ рдкрдЫрд┐, рдмреНрдпрд╛рдХрдЕрдк рд╣рдЯрд╛рдЗрдПрдХреЛ рдЫ (рд╕реНрдиреНрдпрд╛рдкрд╢рдЯ) рд░ рдпреЛрдЬрдирд╛ рдмрдЪрдд рдЧрд░рд┐рдПрдХреЛ рдЫ (рдХреАрд╕реНрдкреЗрд╕)ред рд░ рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдмреНрдпрд╛рдХрдЕрдкрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдХреЗрд╣рд┐ рджрд┐рджреИрди: рд╣рд╛рдореАрд▓реЗ рдбрд╛рдЯрд╛ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рд╣рд░реВ рдмрдЪрдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдиреЛрдб рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдерд┐рдпреЛ - рдпреА рд╡рд┐рд╢реЗрд╖ рдЯреЛрдХрдирд╣рд░реВ рд╣реБрдиреНред

рдХреБрдмреЗрд░рдиреЗрдЯрдорд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╕рди: рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд░ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ
рдХреЗрд╕рд╛рдиреНрдбреНрд░рд╛ рдиреЛрдбрд╣рд░реВ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫрдиреН рднрдиреЗрд░ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рдЯреЛрдХрдирд╣рд░реВрдХреЛ рд╡рд┐рддрд░рдг

Kubernetes рдорд╛ Google рдмрд╛рдЯ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдмреНрдпрд╛рдХрдЕрдк рд▓рд┐рдирдХреЛ рд▓рд╛рдЧрд┐ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдкрд┐рдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ рдпреЛ рд▓рд┐рдЩреНрдХред рд╕реНрдиреНрдпрд╛рдкрд╕рдЯ рд▓рд┐рдиреБ рдЕрдШрд┐ рдиреЛрдбрдорд╛ рдбрд╛рдЯрд╛ рд░рд┐рд╕реЗрдЯ рдЧрд░реНрджреИ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд▓реЗ рдзреНрдпрд╛рди рдирджрд┐рдиреЗ рдПрдХ рдорд╛рддреНрд░ рдмрд┐рдиреНрджреБ рд╣реЛред рддреНрдпреЛ рд╣реЛ, рдмреНрдпрд╛рдХрдЕрдк рд╣рд╛рд▓рдХреЛ рдЕрд╡рд╕реНрдерд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛрдЗрди, рддрд░ рдЕрд▓рд┐ рдкрд╣рд┐рд▓реЗ рд░рд╛рдЬреНрдпрдХреЛ рд▓рд╛рдЧрд┐ рдЧрд░рд┐рдиреНрдЫред рддрд░ рдпрд╕рд▓реЗ рдиреЛрдбрд▓рд╛рдИ рд╕рдЮреНрдЪрд╛рд▓рдирдмрд╛рдЯ рдмрд╛рд╣рд┐рд░ рдирд▓рд┐рди рдорджреНрджрдд рдЧрд░реНрдЫ, рдЬреБрди рдзреЗрд░реИ рддрд╛рд░реНрдХрд┐рдХ рджреЗрдЦрд┐рдиреНрдЫред

set -eu

if [[ -z "$1" ]]; then
  info "Please provide a keyspace"
  exit 1
fi

KEYSPACE="$1"

result=$(nodetool snapshot "${KEYSPACE}")

if [[ $? -ne 0 ]]; then
  echo "Error while making snapshot"
  exit 1
fi

timestamp=$(echo "$result" | awk '/Snapshot directory: / { print $3 }')

mkdir -p /tmp/backup

for path in $(find "/var/lib/cassandra/data/${KEYSPACE}" -name $timestamp); do
  table=$(echo "${path}" | awk -F "[/-]" '{print $7}')
  mkdir /tmp/backup/$table
  mv $path /tmp/backup/$table
done


tar -zcf /tmp/backup.tar.gz -C /tmp/backup .

nodetool clearsnapshot "${KEYSPACE}"

рдПрдЙрдЯрд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдиреЛрдбрдмрд╛рдЯ рдмреНрдпрд╛рдХрдЕрдк рд▓рд┐рдирдХреЛ рд▓рд╛рдЧрд┐ рдмреНрдпрд╛рд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдХреЛ рдЙрджрд╛рд╣рд░рдг

Kubernetes рдорд╛ Cassandra рд▓рд╛рдЧрд┐ рддрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдорд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рд▓ рдХреЗ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ рд░ рдпреА рдордзреНрдпреЗ рдХреБрдирдЪрд╛рд╣рд┐рдБ рджрд┐рдЗрдПрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рдЙрдкрдпреБрдХреНрдд рд╣реБрдиреНрдЫ?

1. StatefulSet рд╡рд╛ рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯрд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдзрд╛рдирд╣рд░реВ

рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдХреНрд▓рд╕реНрдЯрд░ рдЪрд▓рд╛рдЙрди рдЖрдзрд╛рд░рднреВрдд рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рд░рд╛рдореНрд░реЛ рд╡рд┐рдХрд▓реНрдк рд╣реЛред рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯ рд░ рдЧреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рддрдкрд╛рдЗрдБ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓рд╛рдИ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд▓рдЪрд┐рд▓реЛ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдпреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд░рд╛рдореНрд░реЛ рдХрд╛рдо рдЧрд░реНрджрдЫ ... рдЬрдм рд╕рдореНрдо рдХреЗрд╣рд┐ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реБрдиреНрдЫ, рдЬрд╕реНрддреИ рдиреЛрдб рд╡рд┐рдлрд▓рддрд╛ред рдорд╛рдирдХ Kubernetes рдЙрдкрдХрд░рдгрд╣рд░реВрд▓реЗ рдорд╛рдерд┐ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХрд╛ рд╕рдмреИ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрди рд╕рдХреНрджреИрдирдиреНред рдердк рд░реВрдкрдорд╛, рдпреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдзреЗрд░реИ рдЬрдЯрд┐рд▓ рдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рднрдиреНрдиреЗрдорд╛ рдзреЗрд░реИ рд╕реАрдорд┐рдд рдЫ: рдиреЛрдб рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди, рдмреНрдпрд╛рдХрдЕрдк, рд░рд┐рдХрднрд░реА, рдирд┐рдЧрд░рд╛рдиреА, тАЛтАЛрдЖрджрд┐ред

рдкреНрд░рддрд┐рдирд┐рдзрд┐рд╣рд░реВ:

рджреБрдмреИ рдЪрд╛рд░реНрдЯрд╣рд░реВ рд╕рдорд╛рди рд░реВрдкрдорд╛ рд░рд╛рдореНрд░реЛ рдЫрдиреН, рддрд░ рдорд╛рдерд┐ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХрд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рдЕрдзреАрдирдорд╛ рдЫрдиреНред

2. Kubernetes рдЕрдкрд░реЗрдЯрд░ рдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдзрд╛рди

рддреНрдпрд╕реНрддрд╛ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдердк рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдЫрдиреН рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдХреНрд▓рд╕реНрдЯрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдЕрд╡рд╕рд░рд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрдЫрдиреНред Cassandra рдЕрдкрд░реЗрдЯрд░ рдбрд┐рдЬрд╛рдЗрди рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА, рдХреБрдиреИ рдЕрдиреНрдп рдбрд╛рдЯрд╛рдмреЗрд╕ рдЬрд╕реНрддреИ, рдПрдХ рд░рд╛рдореНрд░реЛ рдврд╛рдБрдЪрд╛ Sidecar <-> рдирд┐рдпрдиреНрддреНрд░рдХ <-> CRD рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

рдХреБрдмреЗрд░рдиреЗрдЯрдорд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╕рди: рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд░ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ
рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдЕрдкрд░реЗрдЯрд░рдорд╛ рдиреЛрдб рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдпреЛрдЬрдирд╛

рдЕрд╡рд╕реНрдерд┐рдд рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рд╣реЗрд░реМрдВред

1. instaclust рдмрд╛рдЯ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛-рдЕрдкрд░реЗрдЯрд░

  • GitHub
  • рддрдпрд╛рд░реА: рдЕрд▓реНрдлрд╛
  • рдЗрдЬрд╛рдЬрддрдкрддреНрд░: Apache 2.0
  • рд▓рд╛рдЧреВ: Java

рдпреЛ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдПрдХ рдХрдореНрдкрдиреАрдмрд╛рдЯ рдПрдХ рдзреЗрд░реИ рдЖрд╢рд╛рдЬрдирдХ рд░ рд╕рдХреНрд░рд┐рдп рд░реВрдкрдорд╛ рд╡рд┐рдХрд╛рд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛ рдЬрд╕рд▓реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдпреЛ, рдорд╛рдерд┐ рд╡рд░реНрдгрди рдЧрд░рд┐рдП рдЕрдиреБрд╕рд╛рд░, рдПрдХ рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрдиреНрдЯреЗрдирд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ рдЬрд╕рд▓реЗ HTTP рдорд╛рд░реНрдлрдд рдЖрджреЗрд╢рд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрджрдЫред рдЬрд╛рднрд╛рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ, рдпрд╕рд▓реЗ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рдХреНрд▓рд╛рдЗрдиреНрдЯ-рдЧреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдХреЛ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдХреЛ рдХрдореА рдЧрд░реНрджрдЫред рд╕рд╛рдереИ, рдЕрдкрд░реЗрдЯрд░рд▓реЗ рдПрдЙрдЯреИ рдбрд╛рдЯрд╛рд╕реЗрдиреНрдЯрд░рдХрд╛ рд▓рд╛рдЧрд┐ рд╡рд┐рднрд┐рдиреНрди рд░реНрдпрд╛рдХрд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджреИрдиред

рддрд░ рдЕрдкрд░реЗрдЯрд░рд╕рдБрдЧ рдЕрдиреБрдЧрдордирдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди, CRD рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдЙрдЪреНрдЪ-рд╕реНрддрд░рдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди, рд░ рдмреНрдпрд╛рдХрдЕрдкрд╣рд░реВ рдмрдирд╛рдЙрдирдХрд╛ рд▓рд╛рдЧрд┐ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдЬрд╕реНрддрд╛ рдлрд╛рдЗрджрд╛рд╣рд░реВ рдЫрдиреНред

2. Jetstack рдмрд╛рдЯ рдиреЗрднрд┐рдЧреЗрдЯрд░

  • GitHub
  • рддрдпрд╛рд░реА: рдЕрд▓реНрдлрд╛
  • рдЗрдЬрд╛рдЬрддрдкрддреНрд░: Apache 2.0
  • рдорд╛ рд▓рд╛рдЧреВ: Golang

DB-as-a-Service рд▓рд╛рдИ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрди рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдХрдердиред рд╣рд╛рд▓ рджреБрдИ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ: Elasticsearch рд░ Cassandraред рдпрд╕рдорд╛ RBAC рдорд╛рд░реНрдлрдд рдбрд╛рдЯрд╛рдмреЗрд╕ рдкрд╣реБрдБрдЪ рдирд┐рдпрдиреНрддреНрд░рдг рдЬрд╕реНрддрд╛ рд░реЛрдЪрдХ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рдЫрдиреН (рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдпрд╕рдХреЛ рдЖрдлреНрдиреИ рдЫреБрдЯреНрдЯреИ рдиреЗрднрд┐рдЧреЗрдЯрд░-рдПрдкрд┐рд╕рд░реНрднрд░ рдЫ)ред рдПрдХ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬреБрди рдирдЬрд┐рдХрдмрд╛рдЯ рд╣реЗрд░реНрди рд▓рд╛рдпрдХ рд╣реБрдиреЗрдЫ, рддрд░ рдЕрдиреНрддрд┐рдо рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдбреЗрдв рд╡рд░реНрд╖ рдЕрдШрд┐ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЬрд╕рд▓реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдпрд╕рдХреЛ рд╕рдореНрднрд╛рд╡рдирд╛ рдХрдо рдЧрд░реНрджрдЫред

3. рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛-рдЕрдкрд░реЗрдЯрд░ vgkowski рджреНрд╡рд╛рд░рд╛

  • GitHub
  • рддрдпрд╛рд░реА: рдЕрд▓реНрдлрд╛
  • рдЗрдЬрд╛рдЬрддрдкрддреНрд░: Apache 2.0
  • рдорд╛ рд▓рд╛рдЧреВ: Golang

рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдпрд╕рд▓рд╛рдИ "рдЧрдореНрднреАрд░рддрд╛рдкреВрд░реНрд╡рдХ" рд╡рд┐рдЪрд╛рд░ рдЧрд░реЗрдирдиреН, рдХрд┐рдирдХрд┐ рднрдгреНрдбрд╛рд░рдорд╛ рдЕрдиреНрддрд┐рдо рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдПрдХ рд╡рд░реНрд╖ рднрдиреНрджрд╛ рдмрдвреА рдЕрдШрд┐ рдерд┐рдпреЛред рдЕрдкрд░реЗрдЯрд░ рд╡рд┐рдХрд╛рд╕ рддреНрдпрд╛рдЧрд┐рдПрдХреЛ рдЫ: Kubernetes рдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд░реНрдерд┐рдд рд░реВрдкрдорд╛ рд░рд┐рдкреЛрд░реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ 1.9ред

4. рд░реБрдХ рджреНрд╡рд╛рд░рд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛-рдЕрдкрд░реЗрдЯрд░

  • GitHub
  • рддрдпрд╛рд░реА: рдЕрд▓реНрдлрд╛
  • рдЗрдЬрд╛рдЬрддрдкрддреНрд░: Apache 2.0
  • рдорд╛ рд▓рд╛рдЧреВ: Golang

рдПрдХ рдЕрдкрд░реЗрдЯрд░ рдЬрд╕рдХреЛ рд╡рд┐рдХрд╛рд╕ рд╣рд╛рдореАрд▓реЗ рдЪрд╛рд╣реЗрдХреЛ рд░реВрдкрдорд╛ рдЫрд┐рдЯреЛ рдкреНрд░рдЧрддрд┐ рднрдЗрд░рд╣реЗрдХреЛ рдЫреИрдиред рдпрд╕рдорд╛ рдХреНрд▓рд╕реНрдЯрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирдХреЛ рд▓рд╛рдЧрд┐ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рд╕реЛрдЪреЗрдХреЛ CRD рд╕рдВрд░рдЪрдирд╛ рдЫ, рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреА (рдЙрд╣реА "рд╣реНрдпрд╛рдХ") рдХреЛ рд╕рд╛рде рд╕реЗрд╡рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдиреЛрдбрд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрдиреЗ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджрдЫ... рддрд░ рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐ рдпрддрд┐ рдорд╛рддреНрд░ рд╣реЛред рддреНрдпрд╣рд╛рдБ рд╣рд╛рд▓ рдХреБрдиреИ рдЕрдиреБрдЧрдорди рд╡рд╛ рдмреНрдпрд╛рдХрдЕрдкрд╣рд░реВ рдмрд╛рдХрд╕ рдмрд╛рд╣рд┐рд░ рдЫреИрди (рд╡реИрд╕реЗ, рд╣рд╛рдореА рдЕрдиреБрдЧрдордирдХреЛ рд▓рд╛рдЧрд┐ рдЫреМрдВ рд╣рд╛рдореА рдЖрдлреИрд▓реЗ рд▓рд┐рдПрдХрд╛ рдЫреМрдВ)ред рдПрдЙрдЯрд╛ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдмрд┐рдиреНрджреБ рдпреЛ рд╣реЛ рдХрд┐ рддрдкрд╛рдЗрдБ рдпреЛ рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ ScyllaDB рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

NB: рд╣рд╛рдореАрд▓реЗ рдпреЛ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдПрдЙрдЯрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрд╕рд╛рдиреЛ рдкрд░рд┐рдорд╛рд░реНрдЬрдирдХреЛ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреМрдВред рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рд╕рдореНрдкреВрд░реНрдг рдЕрд╡рдзрд┐ (~ 4 рдорд╣рд┐рдирд╛ рд╕рдЮреНрдЪрд╛рд▓рди) рдорд╛ рдЕрдкрд░реЗрдЯрд░рдХреЛ рдХрд╛рдордорд╛ рдХреБрдиреИ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рджреЗрдЦрд┐рдПрдирдиреНред

5. рд╕реБрдиреНрддрд▓рд╛рдмрд╛рдЯ CassKop

  • GitHub
  • рддрдпрд╛рд░реА: рдЕрд▓реНрдлрд╛
  • рдЗрдЬрд╛рдЬрддрдкрддреНрд░: Apache 2.0
  • рдорд╛ рд▓рд╛рдЧреВ: Golang

рд╕реВрдЪреАрдорд╛ рд╕рдмреИрднрдиреНрджрд╛ рдХрд╛рдиреНрдЫреЛ рдЕрдкрд░реЗрдЯрд░: рдкрд╣рд┐рд▓реЛ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдореЗ 23, 2019 рдорд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдкрд╣рд┐рд▓реЗ рдиреИ рдЕрдм рдпрд╕рдХреЛ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░рдорд╛ рд╣рд╛рдореНрд░реЛ рд╕реВрдЪреАрдмрд╛рдЯ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВрдХреЛ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛ рдЫ, рдЬрд╕рдХреЛ рдердк рд╡рд┐рд╡рд░рдгрд╣рд░реВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рднрдгреНрдбрд╛рд░рдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫред рдЕрдкрд░реЗрдЯрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рдЕрдкрд░реЗрдЯрд░-sdk рдХреЛ рдЖрдзрд╛рд░рдорд╛ рдмрдирд╛рдЗрдПрдХреЛ рдЫред рдмрдХреНрд╕ рдмрд╛рд╣рд┐рд░ рдирд┐рдЧрд░рд╛рдиреА рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред рдЕрдиреНрдп рдЕрдкрд░реЗрдЯрд░рд╣рд░реВрдмрд╛рдЯ рдореБрдЦреНрдп рднрд┐рдиреНрдирддрд╛ рдкреНрд░рдпреЛрдЧ рд╣реЛ CassKop рдкреНрд▓рдЧрдЗрди, Python рдорд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдпреЛ рд░ Cassandra рдиреЛрдбрд╣рд░реВ рдмреАрдЪ рд╕рдЮреНрдЪрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдпреЛред

рдирд┐рд╖реНрдХрд░реНрд╖

рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛рд▓рд╛рдИ рдХреБрдмреЗрд░рдиреЗрдЯрдорд╛ рдкреЛрд░реНрдЯ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд░ рд╕рдореНрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдЖрдлреИрд▓реЗ рдмреЛрд▓реНрдЫ: рд╡рд┐рд╖рдп рдорд╛рдЧрдорд╛ рдЫред

рдпрд╕ рдЪрд░рдгрдорд╛, рддрдкрд╛рдЗрдБ рддрдкрд╛рдЗрдБрдХреЛ рдЖрдлреНрдиреИ рдЬреЛрдЦрд┐рдо рд░ рдЬреЛрдЦрд┐рдордорд╛ рдорд╛рдерд┐рдХреЛ рдХреБрдиреИ рдкрдирд┐ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ: рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рдордзреНрдпреЗ рдХреБрдиреИ рдкрдирд┐ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдЙрдиреАрд╣рд░реВрдХреЛ рд╕рдорд╛рдзрд╛рдирдХреЛ 100% рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рдЧреНрдпрд╛рд░реЗрдиреНрдЯреА рдЧрд░реНрджреИрдиред рддрд░ рдкрд╣рд┐рд▓реЗ рдиреИ, рдзреЗрд░реИ рдЙрддреНрдкрд╛рджрдирд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдмреЗрдиреНрдЪрд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рдЖрд╢рд╛рд╡рд╛рджреА рджреЗрдЦрд┐рдиреНрдЫрдиреНред

рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдЫ рднрд╡рд┐рд╖реНрдпрдорд╛ рдЬрд╣рд╛рдЬрдорд╛ рдпреЛ рдорд╣рд┐рд▓рд╛ рдХрд╛рдордорд╛ рдЖрдЙрдиреЗрдЫ!

PS

рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди