Documentation ¶
Index ¶
- Variables
- func ValidateOperation(str string) error
- type Cluster
- type Config
- type HypervisorStruct
- type LoadBalancer
- func (balancer LoadBalancer) Active(name string) error
- func (balancer LoadBalancer) Add(name string) error
- func (lb LoadBalancer) ChangeThresholdOutInOperatingRatioAlgorithm(working, booting, n int) (float64, int)
- func (lb LoadBalancer) ChangeThresholdOutInThroughputAlgorithm(working, booting, n int) (float64, int)
- func (balancer LoadBalancer) ChangeWeight(name string, weight int) error
- func (balancer LoadBalancer) Inactive(name string) error
- func (lb LoadBalancer) Initialize(c *Config)
- func (balancer LoadBalancer) Remove(name string) error
- func (balancer LoadBalancer) ThHighInOperatingRatioAlgorithm(c *Config, w, n int) float64
- func (balancer LoadBalancer) ThLowInOperatingRatioAlgorithm(c *Config, w, n int) float64
- type ThroughputWithTime
- type VendorStruct
- type VirtualMachine
- type WebSocketStruct
Constants ¶
This section is empty.
Variables ¶
var (
Threshold float64
)
Functions ¶
func ValidateOperation ¶
Types ¶
type Cluster ¶
type Cluster struct { LoadBalancer LoadBalancer `json:"load_balancer"` Vendors []VendorStruct `json:"vendors"` Hypervisors []HypervisorStruct `json:"hypervisors"` VirtualMachines map[string]VirtualMachine `json:"virtual_machines"` }
func (*Cluster) Initialize ¶
Initialize はconfigに基いてLBやVMの設定を行います。
func (Cluster) ServerStatuses ¶
func (cluster Cluster) ServerStatuses(bt []string, config *Config) []apache.ServerStatus
ServerStatuses は稼働中のサーバ配列btを受け取り、btの負荷状況を返します。
type Config ¶
type Config struct { // DevelopLogLevel はデバッグ用標準出力のレベルを指定します。 // 必要ないと判断したら消してください。 // DevelopLogLevel==0: デフォルト 標準出力なし // DevelopLogLevel>=1: 起動停止操作等を出力 // DevelopLogLevel>=2: 各サーバの重み情報を出力 // DevelopLogLevel>=3: 各サーバの負荷状況を全て出力 // DevelopLogLevel>=4: 詳細に DevelopLogLevel int `json:"develop_log_level"` Timeout time.Duration `json:"timeout"` // 負荷取得がタイムアウトしたと判断するまでの時間 Sleep time.Duration `json:"sleep"` // サーバの起動処理発行後、稼働し始めるまでの時間 Wait time.Duration `json:"wait"` // 起動処理発行後、停止処理を実行しない時間 RestorationTime time.Duration `json:"restoration_time"` // タイムアウトなどして重さを下げた後、復元するまでの時間 IsWeightChange bool `json:"is_weight_change"` // 重さを変更するか UseHetero bool `json:"use_hetero"` // ヘテロな環境を使用するか IsAdjustServerNum bool `json:"is_adjust_server_num"` // オートスケールを行うか(現状未使用) UseWeb bool `json:"use_web"` // mouryou-webに情報を送るか UseOperatingRatio bool `json:"use_operating_ratio"` // 稼働率ベースの負荷判定アルゴリズムを使うか UseThroughput bool `json:"use_throughput"` // スループットベースの負荷判定アルゴリズムを使うか InfluxDBAddr string `json:"influxdb_addr"` // InfluxDBのアドレス InfluxDBPort string `json:"influxdb_port"` // InfluxDBのポート InfluxDBUser string `json:"influxdb_user"` // InfluxDBのユーザ InfluxDBPasswd string `json:"influxdb_passwd"` // InfluxDBのパスワード InfluxDBConnection client.Client `json:"influxdb_connection"` // InfluxDBへのコネクション InfluxDBServerDB string `json:"influxdb_serverdb"` // InfluxDBで利用するDB名 OriginMachineNames []string `json:"origin_machine_names"` // オリジンサーバの名称 AlwaysRunningMachines []string `json:"always_running_machines"` // 常に稼働するサーバの名称 StartMachineIDs []int `json:"start_machine_ids"` // はじめから稼働するサーバのID WebSocket WebSocketStruct `json:"web_socket"` // models.WebSocketの構造体 Cluster Cluster `json:"cluster"` // models.Clusterの構造体 }
func (*Config) ContainMachineName ¶
ContainMachineName はnameがnamesに含まれているかどうか検証します。
func (*Config) IsStartMachineID ¶
IsStartMachineID は受け取ったVMのIDが開始時から稼動状態とするサーバに 指定されているかどうか検証します。
func (*Config) LoadSetting ¶
LoadConfig は設定ファイル(~/.mouryou.json)を読み込みます。 設定されていない値があるとここで処理を終了します。
type HypervisorStruct ¶
type HypervisorStruct struct { Name string `json:"name"` Host string `json:"host"` VirtualMachines []VirtualMachine `json:"virtual_machines"` }
func (*HypervisorStruct) Initialize ¶
func (hypervisor *HypervisorStruct) Initialize()
type LoadBalancer ¶
type LoadBalancer struct { Name string `json:"name"` VirtualIP string `json:"virtual_ip"` LoadBalancingAlgorithm string `json:"load_balancing_algorithm"` OperatingRatioAlgorithm string `json:"operating_ratio_algorithm"` OperatingRatioThresholdOut float64 `json:"operating_ratio_threshold_out"` OperatingRatioThresholdIn float64 `json:"operating_ratio_threshold_in"` OperatingRatioMargin float64 `json:"operating_ratio_margin"` OperatingRatioScaleOutInterval int `json:"operating_ratio_scale_out_interval"` OperatingRatioScaleInInterval int `json:"operating_ratio_scale_in_interval"` OperatingRatioDynamicThresholdDiff float64 `json:"operating_ratio_dynamic_threshold_diff"` OperatingRatioDynamicThreshold map[string][]int `json:"operating_ratio_dynamic_threshold"` ThroughputAlgorithm string `json:"throughput_algorithm"` ThroughputMovingAverageInterval int64 `json:"throughput_moving_average_interval"` ThroughputScaleOutThreshold int `json:"throughput_scale_out_threshold"` ThroughputScaleInThreshold int `json:"throughput_scale_in_threshold"` ThroughputScaleInRatio float64 `json:"throughput_scale_in_ratio"` ThroughputScaleOutRatio float64 `json:"throughput_scale_out_ratio"` ThroughputScaleOutTime int `json:"throughput_scale_out_time"` ThroughputScaleInTime int `json:"throughput_scale_in_time"` UseThroughputDynamicThreshold bool `json:"use_throughput_dynamic_threshold"` ThroughputDynamicThreshold map[string][]int `json:"throughput_dynamic_threshold"` }
LoadBalancer はロードバランサの設定情報を格納します。
func (LoadBalancer) ChangeThresholdOutInOperatingRatioAlgorithm ¶
func (lb LoadBalancer) ChangeThresholdOutInOperatingRatioAlgorithm(working, booting, n int) (float64, int)
ChangeThresholdOutInOperatingRatioAlgorithm は起動台数に応じて閾値を切り替えます。
func (LoadBalancer) ChangeThresholdOutInThroughputAlgorithm ¶
func (lb LoadBalancer) ChangeThresholdOutInThroughputAlgorithm(working, booting, n int) (float64, int)
ChangeThresholdOutInThroughputAlgorithm は起動台数に応じて閾値を切り替えます。 変更がない場合0.0を返します.
func (LoadBalancer) ChangeWeight ¶
func (balancer LoadBalancer) ChangeWeight(name string, weight int) error
ChangeWeight
func (LoadBalancer) Initialize ¶
func (lb LoadBalancer) Initialize(c *Config)
Initialize はロードバランサの初期設定を行います。
func (LoadBalancer) ThHighInOperatingRatioAlgorithm ¶
func (balancer LoadBalancer) ThHighInOperatingRatioAlgorithm(c *Config, w, n int) float64
ThHighInOperatingRatioAlgorithm は稼働率ベースのアルゴリズムで使われる高負荷判定(スケールアウト)の閾値です。
func (LoadBalancer) ThLowInOperatingRatioAlgorithm ¶
func (balancer LoadBalancer) ThLowInOperatingRatioAlgorithm(c *Config, w, n int) float64
ThLowInOperatingRatioAlgorithm は稼働率ベースのアルゴリズムで使われる低負荷判定(スケールイン)の閾値です。
type ThroughputWithTime ¶
type VendorStruct ¶
type VendorStruct struct { Name string `json:"name"` VirtualMachines map[string]VirtualMachine `json:"virtual_machines"` }
func (*VendorStruct) Initialize ¶
func (vendor *VendorStruct) Initialize()
Initialize はVMに所属しているvendorの情報を追加します。
type VirtualMachine ¶
type VirtualMachine struct { ID int `json:"id"` Name string `json:"name"` Host string `json:"host"` Operation string `json:"operation"` ThroughputUpperLimit float64 `json:"throughput_upper_limit"` // スループットの平均値 LoadStatus int `json:"load_status"` // 現在の負荷状況(スループット基準) 0:普通 1:過負荷 2:低負荷 BasicWeight int `json:"basic_weight"` // 基準の重さ Weight int `json:"weight"` // 現在の重さ Hypervisor *HypervisorStruct `json:"-"` // ハイパーバイザ Vendor *VendorStruct `json:"-"` // ベンダー }
func (VirtualMachine) Bootup ¶
func (machine VirtualMachine) Bootup(sleep time.Duration) string
Bootup はVMの起動処理を行う. 現在は実際に起動停止は行わないため起動にかかる時間分sleepして擬似的な起動処理としている.
func (VirtualMachine) ServerStatus ¶
func (machine VirtualMachine) ServerStatus() apache.ServerStatus
ServerState はapache.Scoreboardから負荷状況を受け取り返却します。