<filename>sdk/dotnet/Ipvs/Inputs/BackendArgs.cs// *** WARNING: this file was generated by pulumigen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;

namespace Pulumi.Linux.Ipvs.Inputs
{

    /// <summary>
    /// Real server that an associated request for service may be assigned to. The server-address is the host address of a real server, and may plus port. Host can be either a plain IP address or a hostname. Port can be either a plain port number or the service name of port. In the case of the masquerading method, the host address is usually an RFC 1918 private IP address, and the port can be different from that of the associated service. With the tunneling and direct routing methods, port must be equal to that of the service address. For normal services, the port specified in the service address will be used if port is not specified. For fwmark services, port may be omitted, in which case the destination port on the real server will be the destination port of the request sent to the virtual service.
    /// </summary>
    public sealed class BackendArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// forwarder is one of the 'g','i','m'
        ///  g - gatewaying. Use gatewaying (direct routing). This is the default.
        ///  i - ipip. Use ipip encapsulation (tunneling).
        /// m - masquerading. Use masquerading (network access translation, or NAT).
        /// Note: Regardless of the packet-forwarding mechanism specified, real servers for addresses for which there are interfaces on the local node will be use the local forwarding method, then packets for the servers will be passed to upper layer on the local node. This cannot be specified by ipvsadm, rather it set by the kernel as real servers are added or modified.
        /// </summary>
        [Input("forwarder")]
        public Input<string>? Forwarder { get; set; }

        /// <summary>
        /// The host of the server-address. Host can be either a plain IP address or a hostname.
        /// </summary>
        [Input("host", required: true)]
        public Input<string> Host { get; set; } = null!;

        /// <summary>
        /// lthreshold is an integer specifying the lower connection threshold of a server. The valid values of lthreshold are 0 through to 65535. The default is 0, which means the lower connection threshold is not set. If lthreshold is set with other values, the server will receive new connections when the number of its connections drops below its lower connection threshold. If lthreshold is not set but uthreshold is set, the server will receive new connections when the number of its connections drops below three forth of its upper connection threshold.
        /// </summary>
        [Input("lthreshold")]
        public Input<int>? Lthreshold { get; set; }

        /// <summary>
        /// The port of the server-address.
        /// </summary>
        [Input("port", required: true)]
        public Input<int> Port { get; set; } = null!;

        /// <summary>
        /// uthreshold is an integer specifying the upper connection threshold of a server. The valid values of uthreshold are 0 through to 65535. The default is 0, which means the upper connection threshold is not set. If uthreshold is set with other values, no new connections will be sent to the server when the number of its connections exceeds its upper connection threshold.
        /// </summary>
        [Input("uthreshold")]
        public Input<int>? Uthreshold { get; set; }

        /// <summary>
        /// Weight is an integer specifying the capacity of a server relative to the others in the pool. The valid values of weight are 0 through to 65535. The default is 1. Quiescent servers are specified with a weight of zero. A quiescent server will receive no new jobs but still serve the existing jobs, for all scheduling algorithms distributed with the Linux Virtual Server. Setting a quiescent server may be useful if the server is overloaded or needs to be taken out of service for maintenance.
        /// </summary>
        [Input("weight")]
        public Input<int>? Weight { get; set; }

        public BackendArgs()
        {
            Forwarder = "g";
        }
        public static new BackendArgs Empty => new BackendArgs();
    }
}
